2011-12-15 22 views
0

グリッドビューがあり、そこにテンプレートフィールドがあり、ボタンをクリックして選択した行のインデックスを取得したいのですが、フィールドタイプを変更する原因は私がvisibale私の背後にあるコードの属性を手動で変更します。 は、ここに私のコードです:ボタンをクリックしてグリッドビューで選択されたインデックスを取得

<asp:GridView ID="gvService" runat="server" BackColor="White" AutoGenerateColumns="False" 
    BorderColor="#999999" BorderStyle="None" BorderWidth="1px" CellPadding="3" GridLines="Vertical" DataKeyNames="Service_Id, UserId"> 
    <AlternatingRowStyle BackColor="#DCDCDC" /> 
    <Columns> 
     <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" HeaderStyle-BackColor="Gray"> 
      <HeaderStyle BackColor="Gray"></HeaderStyle> 
     </asp:BoundField> 
     <asp:BoundField DataField="L_Name" HeaderText="LastName" SortExpression="L_Name" 
      HeaderStyle-BackColor="Gray"> 
      <HeaderStyle BackColor="Gray"></HeaderStyle> 
      <asp:TemplateField> 
      <ItemTemplate> 
       <asp:Button ID="bttCost" runat="server" Text="Cost" OnCommand="Cmd_Pay" Visible='<%# IsNotPaid((Decimal)Eval("Cost")) %>' /> 
      </ItemTemplate> 
      </asp:TemplateField> 

と私のコードの後ろに:

 int rowIndex = gvService.SelectedIndex; 
     HFServiceID.Value = (string)gvService.DataKeys[rowIndex]["Service_Id"]; 
     HFUserID.Value = (string)gvService.DataKeys[rowIndex]["UserId"]; 
+1

ボタンまたはテンプレートフィールドが表示されません –

答えて

3

がクリックされたボタンは、あなたのonclickイベントでこれを追加するために属している行のインデックスを取得します。

var rowIndex = ((GridViewRow)((Control)sender).NamingContainer).RowIndex; 
関連する問題