我有一个问题,我不知道是否可以做到。
我有一个aspx页面, 加载用户控件(ascx)的用户活动的dedpend。
用户控件有一个gridview,其中一列是超链接。
<asp:HyperLinkField DataNavigateUrlFormatString='<%page %>'
DataTextField="ReqId" HeaderText="Request No." DataNavigateUrlFields="ReqId" />
我想要点击那个超链接,它会指向带参数的同一页面, 但我不能做对。由于某种原因所以我尝试了这个:
<%string page = Page.Request.Path + "reqid={0}"; %>
但在页面中,链接将%page%称为字符串。 有人可以指导我如何做到这一点。
P.S 它曾经像那样工作,并且ascx在解决方案的根文件夹中,当我将所有控件移动到根目录中名为“Controls”的文件夹时,问题就开始了
<asp:HyperLinkField DataNavigateUrlFormatString="?reqid={0}"
DataTextField="ReqId" HeaderText="מספר בקשה" DataNavigateUrlFields="ReqId" />
提前感谢。
答案 0 :(得分:8)
使用模板字段并为其添加超链接。
<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。