我有一个Gridview,其中的数据通过sql查询绑定,并且sql列之一返回单个数字或一串用分号分隔的数字。例如,它可以返回1000
或1001;1002;1003
。如何将每个数字链接到[格式为mywebsite.aspx?ID=1000
]的不同网址?
我最初的想法是采用字符串,将其分解为适当的子字符串,并为每个子字符串使用HtmlTextWriter创建具有所需属性的html标签。
我有以下代码,这些代码是我在aspx.cs文件中定义的,并在aspx文件中这样调用:
public string getSRNum()
{
string srnum = Convert.ToString(Eval("SRNum"));
Stack<string> _srnums;
if (!String.IsNullOrEmpty(srnum))
{
string[] split = srnum.Split(';');
_srnums = new Stack<string>(split);
// Put HtmlTextWriter in using block because it needs to call Dispose.
using (StringWriter sw = new StringWriter())
{
HtmlTextWriter writer = new HtmlTextWriter(sw);
// Loop over some strings.
foreach (var sr in _srnums)
{
writer.AddAttribute(HtmlTextWriterAttribute.Href, String.Format("http://mywebsite.aspx?ID={0}", Convert.ToString(sr).Trim()));
writer.RenderBeginTag(HtmlTextWriterTag.A); // Begin #1
writer.AddAttribute("runat", "server");
writer.AddAttribute("Text", sr);
writer.RenderBeginTag(HtmlTextWriterTag.Label);//Begin #2
writer.RenderEndTag(); //End #2
writer.RenderEndTag(); // End #1
}
return sw.ToString();
}
}
return srnum;
}
<asp:TemplateField>
<EditItemTemplate >
<asp:textbox ID="txthistory" runat="server" Text ='<%# Eval("SRNum") %>' >
</asp:textbox>
</EditItemTemplate>
<ItemTemplate>
<%
getSRNum();
%>
</ItemTemplate>
</asp:TemplateField>
我目前收到错误消息“诸如Eval(),XPath()和Bind()之类的数据绑定方法只能在数据绑定控件的上下文中使用。”我以为我可以改用asp:HiddenField
标记并从那里检索值,但是它在Gridview事件之外,所以我不知道如何获取行索引。
有什么想法吗?