1

我有一个带有 HyperLinkField 列的网格视图,其中 DataNavigateUrlFormatString 如下所示:

DataNavigateUrlFormatString="DetailedPage.aspx?OrderNo={0}"

我想在上面的 DataNavigateUrlFormatstring 中添加另一个值 - 常量 - 以便被调用的页面(DetailedPage 可以获得 OrderNo 的值(动态传递)和所有行的相同值。

例如,url 类似于:DetailedPage.aspx?OrderNo=100&filename='myfilename.doc'</p>

请注意,再次注意,所有行的名称“myfilename.doc”都是相同的,但在页面的 OnLoad 中将是已知的。理想情况下,我希望从 URL 中隐藏第二个值(例如 myfilename.doc),但如果这不可能,它仍然可以工作。

我该怎么做?

4

1 回答 1

0

将 aTemplateFieldHyperLink内部控件一起使用,然后在RowDataBound代码隐藏中的事件中使用,只需将NavigateUrl属性设置为值,如下所示:

标记:

<asp:GridView id="GridView1" runat="server"   
              OnRowDataBound="GridView1_RowDataBound">
    <Columns>
        ...Other columns here...
        <asp:TemplateField>
            <ItemTempalte>
                <asp:HyperLink id="HyperLink1" runat="server" Text="Details" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

代码隐藏:

protected void GridView1_RowDataBound(Object sender, GridViewRowEventArgs e)
{
    // Only interact with the data rows, ignore header and footer rows
    if(e.Row.RowType == DataControlRowType.DataRow)
    {
        // Find the hyperlink control by ID
        var theHyperLink = e.Row.FindControl("HyperLink1") as HyperLink;

        // Verify we found the hyperlink before we try to use it
        if(theHyperLink != null)
        {
            // Set the NavigateUrl value here
            theHyperLink.NavigateUrl = String.Format("DetailedPage.aspx?OrderNo={0}&filename='{1}'", theOrderNumber.ToString(), theFileName);
        }
    }
}

注意:theOrderNumbertheFileName将是从数据库加载页面时确定的值,例如。

于 2013-11-15T01:38:33.090 回答