Как индивидуально гиперссылки на подстроки в столбце gridview? - PullRequest
0 голосов
/ 11 июля 2019

У меня есть Gridview с данными, связанными с помощью запроса sql, и один из столбцов sql возвращает либо одно число, либо строку чисел, разделенных точкой с запятой.Например, он может вернуть 1000 или 1001;1002;1003.Как связать каждое число с отдельным URL [в формате 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, и поэтому я не знаю, как получить индекс строки.

Есть мысли?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...