Monthly Archives: January 2012

GridViewのItemTemplateに配置したボタンクリック時に、行数を取得できない

  ASP.NET4(C#)でやってる。 GridViewのTemplate列を追加し、ボタンコントロールを2つ配置する。 <asp:TemplateField ShowHeader=”False”> <ItemTemplate> <asp:Button ID=”Button1″ runat=”server” CausesValidation=”false” CommandName=”dlt” Text=”削除” /> <br /> <asp:Button ID=”Button2″ runat=”server” CausesValidation=”False” CommandName=”upd” Text=”更新” /> </ItemTemplate> </asp:TemplateField> RowCommandイベント発生時にCommandArgumentから行番号を取得しようとしたのだが、どうやら空文字が入っているらしく、「入力文字列の形式が正しくありません。 」となる。 int rowIndex = Convert.ToInt32(e.CommandArgument);     対応として、RowCreatedイベント発生時に行数をセットするようにした。 protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { Button dltButton = (Button)e.Row.FindControl(“Button1”); Button updButton = (Button)e.Row.FindControl(“Button2”); dltButton.CommandArgument = e.Row.RowIndex.ToString(); updButton.CommandArgument = e.Row.RowIndex.ToString(); } } 行数取得できた。