2010-12-01 63 views
0

我想创建一个DataGrid并使用两个字段作为URL的HyperLinkColumn。
我用VB,VS 2005,.NET 2如何使用DataNavigateUrlField在DataGrid中为HyperLinkColumn设置多个字段

我得到这个异常:
“字段或属性名称为‘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> 

回答

1

我不认为DataNavigateUrlField支持多个领域,但你可以轻松地转换成数据网格GridView中,其HyperLinkField字段支持DataNavigateUrlFields

另外,如果你仍然想使用DataGrid的你需要手动构建NavigateUrl像这样:

UPDATE:

我应该更彻底的测试之前的建议发布前..是的,它的目的是一个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> 
+0

我支持遗留应用,在那里改变到GridView不是在这种情况下的一个选项。 – 2010-12-01 03:47:35

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> 
相关问题