在 RowCommand 中获取选定的行

Getting selectedrow in RowCommand

我有一个网格视图:

<asp:GridView ID="gdvOpinions" runat="server" Width="100%" CellPadding="4" 
                        ForeColor="#333333" GridLines="None" Height="100px" Visible="False" 
                        AutoGenerateColumns="False" onrowcommand="gdvOpinions_RowCommand" >
                    <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
                    <Columns>
                        <asp:ButtonField ButtonType="Button" CommandName="Confirm" Text="تائید" />
                        <asp:ButtonField ButtonType="Button" CommandName="Delete" Text="حذف" />
                        <asp:BoundField DataField="ID" HeaderText="ID" />
                        <asp:BoundField DataField="مقاله" HeaderText="مقاله" >
                        <ControlStyle Width="150px" />
                        </asp:BoundField>
                        <asp:BoundField DataField="نظر کاربر" HeaderText="نظر کاربر" >
                        <ControlStyle Width="250px" />
                        </asp:BoundField>
                    </Columns>
                    <EditRowStyle BackColor="#999999" />
                    <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                    <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                    <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
                    <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
                    <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
                    <SortedAscendingCellStyle BackColor="#E9E7E2" />
                    <SortedAscendingHeaderStyle BackColor="#506C8C" />
                    <SortedDescendingCellStyle BackColor="#FFFDF8" />
                    <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
                </asp:GridView>

如您所见,我的每一行都有两个按钮字段,但是当我单击其中一个按钮并希望将它们的行放入

gdvOpinions_RowCommand

gdvOpinions.SelectedRow

returns空; 我应该如何找到选择了哪一行?

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns = "false" 
    OnRowCommand = "OnRowCommand">
 <Columns>
  <asp:ButtonField CommandName = "ButtonField"  DataTextField = "CustomerID"
        ButtonType = "Button"/>
 </Columns>
</asp:GridView>

protected void OnRowCommand(object sender, GridViewCommandEventArgs e)
{
    int index = Convert.ToInt32(e.CommandArgument);
    GridViewRow gvRow = GridView1.Rows[index]; 
}

根据我对你的问题的理解,如果你试图获取点击按钮的行,那么在这种情况下,这可能是正确的做法:

GridViewRow gRow = (GridViewRow)((Control)e.CommandSource).NamingContainer; 

现在,这是针对 ButtonImageButton 等控件的。 ButtonField.

你可能需要即兴创作

您还可以将 ButtonField 更改为带有 Button 的简单 TemplateField

希望这对您有所帮助。