Datagridview多查询字符串问题

时间:2012-06-20 08:07:29

标签: c# asp.net sql sql-server-2008

我只从ItemID中的querystring获得gridview。但我想在querystring中显示该链接。

gridview属性:

  • DataNavigateUrlFieldsItemIDLink
  • DataNavigateUrlFormatStringOpenLink.aspx?itemid={0}&link={1}

此处ItemID pk Item表的自动生成字段,只要数据保存在数据库中,它就会升级。

Link列是来自项目表的数据的http链接及其gridview中的超链接模板,它显示hyperlinkfield中的数据标题。

我的主要目的是获取ItemID的值并从querystring链接,以便我可以将其显示到另一个.aspx页面。

2 个答案:

答案 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()));
}

与......结合使用。

ASPX page design view

导致......

Chrome view of ASPX page

如您所见,只需使用 DataNavigateUrlXXX 即可实现您描述的行为。上面几行你可以看到我的代码。

无论如何要注意任何类型的queryString操作,并在showItem.aspx中检查您给定的 queryString 值。您可以查看securing queryStringsthis 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添加第二个查询字符串。