2012-07-03 75 views
1
試圖與參數的CommandName =「X」一個GridView以觸發按鈕時,我有麻煩

,我試圖達到我的「如果」在GridView1_RowCommand事件,但我只是不能用於某種原因,如果你能幫助我,我會心存感激。ASP.net命令名,將不會觸發

這是我的.aspx部分

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
<ContentTemplate> 
    <asp:GridView ID="GridView1" runat="server" CellPadding="4" 
      EnableModelValidation="True" ForeColor="#333333" GridLines="None" 
      Height="193px" Width="968px" AllowPaging="True" AllowSorting="True" 
      AutoGenerateColumns="False" DataKeyNames="ID" 
      DataSourceID="SOURCE1" onrowcommand="GridView1_RowCommand"> 
      <AlternatingRowStyle BackColor="White" /> 
      <Columns> 
      <asp:TemplateField ShowHeader="False"> 
       <ItemTemplate> 
        <asp:Button Text = "Seleccionar" runat="server" CommandName="X" CommandArgument='<%# Container.DataItemIndex %>' /> 
       </ItemTemplate> 
      </asp:TemplateField> 
       <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" 
        ReadOnly="True" SortExpression="ID" /> 
       <asp:BoundField DataField="IDEmpresa" HeaderText="IDEmpresa" 
        SortExpression="IDEmpresa" /> 
      </Columns> 
      <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" /> 
     </asp:GridView> 
    </ContentTemplate> 
</asp:UpdatePanel> 

這是我的C#代碼:

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    if (e.CommandName == "X") 
    { 
     int index = Convert.ToInt32(e.CommandArgument); 
     GridViewRow row = GridView1.Rows[index]; 
     Label1.Text = "WOW It reached out"; 
    } 
} 

我跟着ASP.net頁面的指示,和IM相當新的.NET(我不知道UpdatePanel是否與它有關)

+0

你禁用了視圖狀態嗎? –

回答

1

做了一個快速測試,你提供的代碼有效,但我必須連接我自己的數據源。

什麼你缺少這裏是Label1的是你的UpdatePanel之外,並不會刷新基於在UpdatePanel內本地化的回發。

與GridView的和的UpdatePanel /按鈕小心的詞。確保您在Page_Load期間沒有手動綁定/重新綁定,並且如果您有代碼,則可以在if(!IsPostBack) { }聲明中這樣做。

+0

非常感謝您的建議,我不知道爲什麼,但在我的原始代碼中,我在RowCommand「int ID」或其他東西中有一個變量,曾用於打印在外部標籤上(使用正確的.ToString();)每次UpdatePanel做出自己的回發,重新啓動PC,並且出於某種神祕的原因... – Carlos