簡體   English   中英

動態更改ASP.net gridview itemTemplate中的超鏈接的URL

[英]Change URL of Hyperlink in ASP.net gridview itemTemplate dynamically

我正在創建一個UI,其中包含帶有gridView的itemTemplate。 在ItemTemplate內,我需要一個鏈接,該鏈接將根據我綁定到表的表值動態填充。 換句話說,有時鏈接將指向我的服務器上的文件,有時它將指向另一個URL。 本質上,我需要能夠檢查要綁定到gridview的表上的標志,然后根據表中對應行的數據更新每行itemTemplate。

到目前為止,我有這個標記:

                 <asp:GridView ID="grdVDocuments" 
                                runat="server" 
                                DataSourceID="sqlDS_wwso" 
                                EnableModelValidation="True" 
                                AutoGenerateColumns="False" 
                                OnRowDataBound="grdVDocuments_RowDataBound"                      
                                CssClass="documents_DataTable" AllowPaging="True"            
                                >
                    <Columns>                            
                        <asp:TemplateField HeaderText="Download">
                            <ItemTemplate>

                                <a href="/<%# Eval("fileName") %>" target="_blank" id="lnkContent">
                                   <img src="images/orange_download_cropped.png" alt="" border="0"/></a> 

                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:BoundField DataField="displayName" HeaderText="displayName" SortExpression="displayName" />
                        <asp:BoundField DataField="fileName" HeaderText="fileName" SortExpression="fileName" />                             
                        <asp:BoundField DataField="category" HeaderText="category" SortExpression="category" />
                        <asp:BoundField DataField="sub_category" HeaderText="Sub-Category" SortExpression="sub_category" />
                        <asp:BoundField DataField="datePosted" HeaderText="datePosted" SortExpression="datePosted" />                                                         
                    </Columns>
                 </asp:GridView>

以及后面的代碼,由於無法識別超鏈接而遭到轟炸

    protected void grdVDocuments_RowDataBound(object sender, GridViewRowEventArgs e)        
    {

        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            HyperLink myHyperLink = e.Row.FindControl("lnkContent") as HyperLink;

            myHyperLink.NavigateUrl = "<someOtherURL>";

        }
    }

數據表在名為isFile的標志上有一個“位”數據類型。 當isFile = 1時,URL必須為“ ... /”,否則,需要將itemtemplate超鏈接中每一行的URL設置為表中包含URL的另一個字段; 即“ someOtherURL”。

任何幫助表示贊賞;)

謝謝!

您需要在ItemTemplate中使用服務器控件。 因此,您需要將runat="server"屬性添加到a標簽。 但是,這是一個HtmlAnchor元素,您需要HtmlAnchor轉換為HtmlAnchor而不是像(代碼隱藏)這樣的Hyperlink

...
var myHyperLink = e.Row.FindControl("lnkContent") as HtmlAnchor;
myHyperLink.HRef = "<someOtherURL>";
...

或者,您可以在aspx標記中使用<asp:Hyperlink>標記(而不是html anchor a

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM