如何从ASP.NET GridView
控件获取当前选定的行键?
如果我处理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>
答案 0 :(得分:1)
gridview的用户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"];
答案 1 :(得分:1)
如果我处理Sorted事件或PageIndexChanged,则只有null值 在GridView.SelectedValue。
检查控件生命周期中稍后的事件中的SelectedValue。像PreRender一样:
protected void GridView1_PreRender(object sender, EventArgs e)
{
string currentValue = GridView1.SelectedValue;
}
不要忘记将OnPreRender="GridView1_PreRender"
添加到您的标记中。