如何在gridview列中单独超链接子字符串?

时间:2019-07-11 17:54:58

标签: c# html asp.net sql-server gridview

我有一个Gridview,其中的数据通过sql查询绑定,并且sql列之一返回单个数字或一串用分号分隔的数字。例如,它可以返回10001001;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事件之外,所以我不知道如何获取行索引。

有什么想法吗?

0 个答案:

没有答案