Динамическое задание Gridview DataNavigateUrlFormatString внутри пользовательского элемента управления (ASCX) - PullRequest
3 голосов
/ 24 июня 2011

У меня есть проблема, о которой я не знаю, можно ли это сделать.

У меня есть страница aspx, которая загружает в зависимости от активности пользователя пользовательский элемент управления (ascx).

пользовательский элемент управления имеет вид сетки, один из моих столбцов является гиперссылкой.

<asp:HyperLinkField  DataNavigateUrlFormatString='<%page %>'
        DataTextField="ReqId" HeaderText="Request No." DataNavigateUrlFields="ReqId" />

Я хочу, чтобы при нажатии на эту гиперссылку он направлялся на ту же страницу с параметрами, но я не могу сделать это правильно.по какой-то причине, поэтому я попробовал это:

<%string page = Page.Request.Path + "reqid={0}"; %>

, но на странице ссылка ссылается на% page% в виде строки.Может кто-нибудь PLS направить меня, как это.

PS Он работал, когда это было так, и ascx был в корневой папке решения, проблема начинается, когда я переместил все свои элементы управления в папку вroot с именем "Controls"

<asp:HyperLinkField  DataNavigateUrlFormatString="?reqid={0}"
        DataTextField="ReqId" HeaderText="מספר בקשה" DataNavigateUrlFields="ReqId" />

заранее спасибо.

1 Ответ

8 голосов
/ 24 июня 2011

Используйте поле шаблона и добавьте к нему гиперссылку.

<asp:TemplateField HeaderText="Request No.">
   <ItemTemplate>
     <asp:HyperLink ID="EditHyperLink1" runat="server" 
          NavigateUrl='<%# Page.Request.Path + "?reqid=" + Eval("ReqId") %>'
          Text='<%# Eval("ReqId") %>' >
     </asp:HyperLink>
   </ItemTemplate>
</asp:TemplateField>

Или вы можете использовать обработчик событий GridView_RowDatabound и изменить Navigateurl для конкретного элемента управления.

protected void myGV_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        HyperLink myHL = (HyperLink)e.Row.FindControl("EditHyperLink1");
        myHL.NavigateUrl = Page.Request.Path + "?reqid=" + e.Row.Cells[0].Text.ToString();
    }
}

Я предположил, что ReqId присутствует в 1-й ячейке.

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