2011-06-24 56 views
3

我有一個問題,我不知道它是否可以完成。在用戶控件(ASCX)內動態設置Gridview DataNavigateUrlFormatString

我有一個aspx頁面, 加載用戶活動的用戶控件(ascx)。

用戶控件有一個gridview,其中一列是超鏈接。

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

我想,對超鏈接的點擊,它會直接與參數相同的頁面, 但我不能這樣做的權利。由於某種原因,所以我試過這一個:

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

但在頁面中鏈接指%page%作爲一個字符串。 有人可以指導我如何去做。

PS 它用來工作時,它是這樣的,在ASCX是在解決方案的根文件夾,這個問題開始,當我提出我的所有控件中命名的根文件夾「控制」

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

在此先感謝。

+0

我忘了提及幾個頁面(aspx)加載該控件,並且每次url不同。所以我需要每個calliing頁面都做。 – RonenIL

回答

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出現在第1個單元格中。

+0

你能給我一個GridView_RowDatabound的例子嗎? – RonenIL

+0

查看上面的示例。 – askids

+0

謝謝askids !!只是最後一個問題你認爲什麼更好? – RonenIL

相關問題