-1

如何从 ASP.NETGridView控件中获取当前选定的行键?
如果我处理SelectedIndexChanged事件,即使选择的记录 ID 已更改,它也不会在分页或排序时引发。
如果我处理Sorted事件或,PageIndexChanged则只有null.GridView.SelectedValue

我需要它来根据当前选定的行更新动态添加的控件。

编辑

GridView 标记:

<asp:GridView ID="GridView" runat="server" AllowPaging="True" AllowSorting="True"
    AutoGenerateColumns="False" DataKeyNames="ID_USER" DataSourceID="dsUsers" OnSelectedIndexChanged="GridView_SelectedIndexChanged"
    OnRowDataBound="GridView_RowDataBound" OnSelectedIndexChanging="GridView_SelectedIndexChanging" 
    onpageindexchanged="GridView_PageIndexChanged" onsorted="GridView_Sorted">
</asp:GridView>
4

2 回答 2

1

网格视图的用户DataKeyNames属性。

 <asp:GridView ID="GridView1" runat="server" DataKeyNames="ProductID">
 </asp:GridView>

我通常通过 CommandArgument 传递 RowIndex 并使用它来检索我想要的 DataKey 值。

在按钮上:

CommandArgument='<%# DataBinder.Eval(Container, "RowIndex") %>'

关于服务器事件

int rowIndex = int.Parse(e.CommandArgument.ToString());
string val = (string)this.grid.DataKeys[rowIndex]["ProductID"];
于 2013-03-08T13:00:52.137 回答
1

如果我处理 Sorted 事件或 PageIndexChanged,则 GridView.SelectedValue 中只有空值。

检查控件生命周期后期的事件中的 SelectedValue。像 PreRender 一样:

protected void GridView1_PreRender(object sender, EventArgs e)
{
    string currentValue = GridView1.SelectedValue;
}

不要忘记添加OnPreRender="GridView1_PreRender"到您的标记中。

于 2013-03-08T14:06:04.960 回答