我有一个带有HyperLinkField列的gridview,其中DataNavigateUrlFormatString如下:
DataNavigateUrlFormatString="DetailedPage.aspx?OrderNo={0}"
我想在上面的DataNavigateUrlFormatstring中添加另一个值 - 常量 - 以便被调用页面(DetailedPage可以同时获取OrderNo的值(动态传递)和所有行的相同值。
例如,网址如下: DetailedPage.aspx OrderNo = 100安培;文件名=” myfilename.doc”
请注意,名称“myfilename.doc”对于所有行都是相同的,但在页面的OnLoad中是已知的。理想情况下,我希望从URL隐藏第二个值(例如myfilename.doc) 但如果这是不可能的,它仍然有效。
我该怎么做?
答案 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);
}
}
}
注意:例如,theOrderNumber
和theFileName
是从数据库加载页面时确定的值。