我有一个网格视图,其中包含客户端ID,客户端名称,客户端联系号码以及指向客户端详细信息的超链接。 我想将选定的clint ID传递给另一个asp页面(clientDetail.aspx& ClientContact.aspx)。 我想将clientID作为会话传递。但是我该怎么做呢?有人可能会对此表示反对,因为我对此非常陌生。
&安培;我如何在clientDetail.aspx&中使用传递的数据? ClientContact.aspx?
提前感谢您的帮助。
答案 0 :(得分:2)
将两个类型为HyperLinkField的新列添加到gridView,如下所示。现在clientID作为QueryString传递。一个链接在这里
<asp:HyperLinkField DataNavigateUrlFields="ClientID"
DataNavigateUrlFormatString="~/ClientDetails.aspx?id={0}"
Text="Client Details" />
答案 1 :(得分:1)
假设您选择了带有按钮或链接按钮的网格行,您可以使用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"
)。我要停下来 - 只要输入就可能会让人感到困惑。
答案 2 :(得分:1)
您应该能够在超链接的navgiate url中评估asp.net gridview的clientid字段,并将其作为查询字符串传递,如下所示:
<asp:gridview id="OrdersGridView"
datasourceid="OrdersSqlDataSource"
autogeneratecolumns="false"
runat="server">
<columns>
<asp:boundfield datafield="ClientID"
headertext="Client ID"/>
<asp:boundfield datafield="ClientName"
headertext="Client Name"/>
<asp:boundfield datafield="ClientContact"
headertext="Client Contact"/>
<asp:hyperlinkfield text="Details..."
navigateurl="~\details.aspx?clientid='<%# Eval("ClientID") %>'"
headertext="Order Details"
target="_blank" />
</columns>
</asp:gridview>