Предполагая, что вы выбрали строку сетки кнопкой или кнопкой связи, вы можете использовать событие 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
}
И есть альтернативы, использующие разные события, например, вы можете использовать коллекцию DataKeys GridView, чтобы сохранить интересующее вас значение и выбрать его там
Фрагмент разметки
<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, если хотите - если она не подходит для пользовательского интерфейса. Или используйте скрытое поле (с runat="server"
). Я собираюсь остановиться - я рискую запутаться, просто набрав.