2015-09-30 25 views
0

您好,我在執行以下功能的網格視圖中具有此按鈕字段。將按鈕字段轉換爲模板時不執行字段

但是,如果我將此按鈕字段轉換爲模板字段該函數不會執行。

我得到的錯誤{「輸入的字符串格式不正確。」}。

<asp:ButtonField CommandName="Selectagreement" HeaderText="Select" ControlStyle-CssClass="btn btn-primary" Text="select"> 
          <ControlStyle CssClass="btn btn-primary" /> 
         </asp:ButtonField> 
     protected void gvAgreement_RowCommand(object sender, GridViewCommandEventArgs e) 
    { 
     try 
     { 
      string commandName = e.CommandName.ToString().Trim(); 
      GridViewRow row = gvAgreement.Rows[Convert.ToInt32(e.CommandArgument)]; 
      switch (commandName) 
      { 
       case "Selectagreement": 
        Label1.Text = row.Cells[2].Text; 
        break; 
       default: break; 

      } 
     } 
     catch (Exception ex) 
     { 
      Response.Write("Error: " + ex.Message); 

     } 
    } 



         <asp:TemplateField HeaderText="Select" ShowHeader="False"> 
          <ItemTemplate> 
           <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="false" CommandName="Selectagreement" Text="select"></asp:LinkButton> 
          </ItemTemplate> 
          <ControlStyle CssClass="btn btn-primary" /> 
         </asp:TemplateField> 
+1

您的鏈接按鈕沒有命令參數,所以e.CommandArgument將是無效的 – Hakunamatata

回答

1

正如在評論部分提及@Hakunamatata,該CommandArgument未設置<ItemTemplate>下的鏈接按鈕。

但是,根據您的代碼,如果您剛剛觸發鏈接按鈕單擊的相應行的行索引之後,則可以執行此操作。

protected void gvAgreement_RowCommand(object sender, GridViewCommandEventArgs e) 
    { 
     try 
     { 
      string commandName = e.CommandName.ToString().Trim(); 

      GridViewRow row = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer); 

      switch (commandName) 
      { 
       case "Selectagreement": 
        Label1.Text = row.Cells[2].Text; 
        break; 
       default: break; 

      } 
     } 
     catch (Exception ex) 
     { 
      Response.Write("Error: " + ex.Message); 

     } 
    } 

基本上我更換

GridViewRow row = gvAgreement.Rows[Convert.ToInt32(e.CommandArgument)]; 

GridViewRow row = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer); 
相關問題