在代码生成的GridView中,将BoundField作为HyperlinkField的一部分

3
请问如何在使用C#生成的GridView中将一个绑定字段(Emp_ID)包含到HyperLinkField(IDNumber)中?这样URL字符串将是'../Pages/Home.aspx?Emp_ID=(Emp_ID)'>(IDNumber)</a>。谢谢。
以下是代码片段:
IDColumn.DataField = "Emp_ID";
IDColumn.HeaderText = "Emp_ID";
string[] id = new string[] { "Emp_ID" };
IDColumn.Visible = false;
grid.Columns.Add(IDColumn);

hyperlinkedColumn.DataTextField = "IDNumber";
hyperlinkedColumn.HeaderText = "ID No.";
hyperlinkedColumn.DataNavigateUrlFields = id;
hyperlinkedColumn.DataTextFormatString = "<a href='../Pages/Home.aspx?Emp_ID='>{0}</a>";
hyperlinkedColumn.Visible = true;
grid.DataKeyNames = id;
grid.Columns.Add(hyperlinkedColumn);
1个回答

2
您需要做的是设置DataNavigateUrlFormatString而不是DataTextFormatString。
string[] id = new string[] { "Emp_ID" }; 

HyperLinkField hyperlinkedColumn = new HyperLinkField();
hyperlinkedColumn.DataTextField = "IDNumber";
hyperlinkedColumn.HeaderText = "ID No.";
hyperlinkedColumn.DataNavigateUrlFields = id;
hyperlinkedColumn.DataNavigateUrlFormatString = "../Pages/Home.aspx?Emp_ID={0}";
hyperlinkedColumn.Visible = true;

哇,这真的很简单。我之前对方法有些困惑,谢谢。 - janejanejane
关于这个问题,另一个问题是是否可以将“EMP_ID”存储在会话中?如果可以,如何实现?谢谢。 - janejanejane
我不太确定你的意思。您可以使用Session["Emp_ID"] = "whatever"在会话状态中存储任何内容。您是指ViewState吗?如果您想将Emp_ID存储在ViewState中,以便可以访问每一行,请尝试向GridView添加数据键 - grid.DataKeyNames = new string[] { "Emp_ID" }。 - kevev22
抱歉给您带来困扰。假设我想将EMP_ID存储在会话变量中,而不是放入查询字符串中,该如何实现? - janejanejane

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接