如何使用DataNavigateUrlField在DataGrid中为HyperLinkColumn设置多个字段

时间:2010-12-01 02:40:20

标签: .net datagrid

我正在尝试使用HyperLinkColumn创建一个DataGrid,它使用两个字段作为URL 我正在使用Vb,VS 2005,.net 2

我得到了这个例外:
“在所选数据源上找不到名为'PrimKey,IsCommercial'的字段或属性。”

我不知道为什么,我已经检查了以下内容。

  • 字段拼写正确。
  • 字段位于数据源中。
  • 这些字段都可以作为简单的绑定列工作。

这是我想要做的一个例子。

<asp:HyperLinkColumn SortExpression="LogNo" DataNavigateUrlField="PrimKey, IsCommercial" DataNavigateUrlFormatString="../Clarifications.aspx?PrimKey={0}&IsCommercial={1}" DataTextField="LogNo" HeaderText="LogNo" ItemStyle-Wrap="false"></asp:HyperLinkColumn>

2 个答案:

答案 0 :(得分:2)

我最终用TemplateColumn解决了这个问题 例如:

<asp:TemplateColumn HeaderText="LogNo" SortExpression="LogNo">
   <ItemTemplate>
      <a href="../Clarifications.aspx?PrimKey=<%# Container.DataItem("PrimKey").ToString() & "&IsCommercial=" & Container.DataItem("IsCommercial") %>"><%#Eval("LogNo")%></a>
   </ItemTemplate>
</asp:TemplateColumn>

答案 1 :(得分:1)

我不认为DataNavigateUrlField支持多个字段,但您可以轻松地将DataGrid转换为其HyperLinkField支持DataNavigateUrlFields

的GridView

或者,如果您仍想使用DataGrid,则需要手动构建NavigateUrl,如下所示:

<强>更新

我应该在发布之前更彻底地测试之前的建议..是的,它本来是在一个TemplateColumn中:

<asp:TemplateColumn SortExpression="LogNo" HeaderText="LogNo">
    <ItemTemplate>
        <asp:HyperLink runat="server" NavigateUrl='<%# "../Clarifications.aspx?PrimKey=" & Container.DataItem("PrimKey") & "&IsCommercial=" & Container.DataItem("IsCommercial") %>'><%# Container.DataItem("LogNo")%></asp:HyperLink>
    </ItemTemplate>                            
</asp:TemplateColumn>