C# 获取单击按钮所在行的SelectedIndex
我在UpdatePanel中的GridView中有两个按钮 对于这两个按钮,我需要为单击按钮的行获取rowId/selectedIndex。我还需要根据点击的按钮做一些额外的事情。一个将重定向(编辑),另一个(请求信)将更新sql数据库。这两个函数都需要行的selectedIndex 按钮是最后两个按钮C# 获取单击按钮所在行的SelectedIndex,c#,webforms,C#,Webforms,我在UpdatePanel中的GridView中有两个按钮 对于这两个按钮,我需要为单击按钮的行获取rowId/selectedIndex。我还需要根据点击的按钮做一些额外的事情。一个将重定向(编辑),另一个(请求信)将更新sql数据库。这两个函数都需要行的selectedIndex 按钮是最后两个按钮 <asp:GridView runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSou
<asp:GridView runat="server" AutoGenerateColumns="False"
DataSourceID="SqlDataSource4" EnableModelValidation="True"
DataKeyNames="id" Width="100%"
AllowSorting="True" CssClass="Grid" GridLines="None"
onrowcreated="SubpoenaGrid_RowCreated" ID="SubpoenaGrid"
onrowdatabound="SubpoenaGrid_RowDataBound"
<!--onselectedindexchanged="SubpoenaGrid_SelectedIndexChanged" -->
onrowcommand="SubpoenaGrid_RowCommand">
<Columns>
<asp:CommandField ShowSelectButton="True" ItemStyle-CssClass="HiddenColumn"
HeaderStyle-CssClass="HiddenColumn">
<HeaderStyle CssClass="HiddenColumn"></HeaderStyle>
<ItemStyle CssClass="HiddenColumn"></ItemStyle>
</asp:CommandField>
<asp:BoundField DataField="id" HeaderText="id" InsertVisible="False"
ReadOnly="True" SortExpression="id" Visible="False" />
<asp:BoundField DataField="type" HeaderText="Type"
SortExpression="type" >
</asp:BoundField>
<asp:BoundField DataField="status" HeaderText="Status"
SortExpression="status" >
</asp:BoundField>
<asp:BoundField DataField="dateRequested" HeaderText="Request Date"
SortExpression="dateRequested" DataFormatString="{0:d}" >
</asp:BoundField>
<asp:BoundField DataField="locName" HeaderText="Recipient"
SortExpression="locName" >
</asp:BoundField>
<asp:BoundField DataField="name" HeaderText="Debtor"
SortExpression="name" >
</asp:BoundField>
<asp:ButtonField ButtonType="Button" CommandName="edit" Text="Edit" />
<asp:ButtonField ButtonType="Button" CommandName="requestLet" HeaderText="Request Letter?" Text="Request Letter" />
</Columns>
<HeaderStyle HorizontalAlign="Left" />
</asp:GridView>
onrowcommand=“传票”
首先,您需要将最后两列(绑定字段)转换为模板字段,如下所示:
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="Button1" runat="server" CausesValidation="false" CommandName="edit" Text="Edit" OnCommand="OnGridViewItemCommand" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Request Letter?">
<ItemTemplate>
<asp:Button ID="Button2" runat="server" CausesValidation="false" CommandName="requestLet" Text="Request Letter" OnCommand="OnGridViewItemCommand" />
</ItemTemplate>
</asp:TemplateField>
protected void OnGridViewItemCommand(object sender, CommandEventArgs e)
{
var row = (sender as Button).NamingContainer as GridViewRow;
int dataItemIndex = row.DataItemIndex; //index of selected item in underlying datasource
int itemIndex = row.RowIndex; // index of selected item in Rows collection
switch (e.CommandName)
{
case "edit":
//edit action code
break;
case "requestLet":
//request Letter action code
break;
default:
break;
}
}
我找到了一个不同但相似的解决方案,但我更喜欢这个方案。非常感谢。