我有网格视图,其中有一个模板字段,我希望通过单击按钮获取所选行的索引我无法更改字段类型,因为我想手动更改后面代码中的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"];
答案 0 :(得分:3)
要获取单击按钮所属的行索引,请在onclick事件中添加此内容。
var rowIndex = ((GridViewRow)((Control)sender).NamingContainer).RowIndex;