我只从ItemID
中的querystring
获得gridview
。但我想在querystring
中显示该链接。
gridview
属性:
DataNavigateUrlFields
:ItemID
,Link
。DataNavigateUrlFormatString
:OpenLink.aspx?itemid={0}&link={1}
。此处ItemID
是 pk 和Item
表的自动生成字段,只要数据保存在数据库中,它就会升级。
Link
列是来自项目表的数据的http链接及其gridview
中的超链接模板,它显示hyperlinkfield
中的数据标题。
我的主要目的是获取ItemID
的值并从querystring
链接,以便我可以将其显示到另一个.aspx页面。
答案 0 :(得分:2)
我刚做了一个快速演示并尝试了你所描述的内容。显然, HyperLink列 无法从 DataNavigateUrlFields 中编码您指定的链接。所以我创建了一个 templateField 和一个自定义方法和voilá
// code behind
public string createUrl(object itemName, object link)
{
return string.Format("showItem.aspx?itemID={0}&link={1}",
itemName.ToString(),
HttpUtility.UrlEncode(link.ToString()));
}
与......结合使用。
导致......
如您所见,只需使用 DataNavigateUrlXXX 即可实现您描述的行为。上面几行你可以看到我的代码。
无论如何要注意任何类型的queryString操作,并在showItem.aspx中检查您给定的 queryString 值。您可以查看securing queryStrings或this example
答案 1 :(得分:0)
我为我的一个项目做过类似的事情。代码如下。我希望它有所帮助。
<asp:TemplateField>
<ItemTemplate>
<asp:HyperLink ID="lnkViewRequest" runat="server" NavigateUrl='<%# "./ViewRequest.aspx?Database=" & Request.QueryString("Database") & "&RequestNumber=" & Eval("Request") %>' Text="View"></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
这里我使用了从QueryString传入的值,然后从gridrow中添加了一个值,以便向传出的URL添加第二个查询字符串。