在gridview超链接中指定常量值

时间:2013-11-15 01:26:16

标签: asp.net

我有一个带有HyperLinkField列的gridview,其中DataNavigateUrlFormatString如下:

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

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

例如,网址如下: DetailedPage.aspx OrderNo = 100安培;文件名=” myfilename.doc”

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

我该怎么做?

1 个答案:

答案 0 :(得分:0)

使用内置TemplateField控件的HyperLink,然后在代码隐藏中的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是从数据库加载页面时确定的值。