假设您选择了带有按钮或链接按钮的网格行,您可以使用OnRowCommand 事件
当您连接到此事件时,您可以从所选项目中挑选出您想要的值,然后将其保存到会话中,该会话随后可用于后续页面。在下面的示例中,我假设该值位于标签字段中,因此您可以从该控件中选择它。
void ContactsGridView_RowCommand(Object sender, GridViewCommandEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
Label lblMyValue = (Label)e.Row.FindControl("lblMyValue");
Session["myValue"] = lblMyValue .Text;
}
}
还有其他变体,例如,您可以将感兴趣的值存储在用于选择行的按钮的CommandArgument 属性中。命令参数将在RowCommand 事件中可用
void ContactsGridView_RowCommand(Object sender, GridViewCommandEventArgs e)
{
string arg = e.CommandArgument;
//.. put into session here
}
还有使用不同事件的替代方法,例如,您可以使用 GridView 的 DataKeys 集合来存储您感兴趣的值并从中挑选出值
标记片段
<asp:gridview id="CustomersGridView"
//.. more properties
datakeynames="myID"
onselectedindexchanged="MyGridView_SelectedIndexChanged"
runat="server">
背后的代码
void MyGridView_SelectedIndexChanged(Object sender, EventArgs e)
{
int index = MyGridView.SelectedIndex;
Session["myValue"] = CustomersGridView.DataKeys[index].Value.ToString();
}
有许多替代方法可以让这个工作。如果是我,我会使用第一个详细的 - 我一直发现它最容易开始工作。如果您愿意,可以使用 Css 隐藏标签 - 如果它不适合 UI。或者使用隐藏字段(使用runat="server")。我要停下来了——我只是在冒着混淆的风险。