我知道您可以使用感叹号将简单类型的数组(如字符串)绑定到GridView,就像这样
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField HeaderText="Array Field" DataField="!" />
</Columns>
</asp:GridView>
但DataNavigateUrlFields
似乎并非如此<asp:HyperLinkField DataNavigateUrlFields="!" DataNavigateUrlFormatString="RoleInformation.aspx?role={0}" Text="Manage users" />
我收到以下错误:
名称为“!”的字段或媒体资源未在所选数据源中找到。
答案 0 :(得分:3)
大多数人可能都不知道使用我怀疑的!
字段。当我读到你的问题时,它实际上让我记住了我读过但从未真正使用过的功能。考虑到这一点,我认为这种类型的字段没有办法,因为它可能在HyperLinkField实现中被遗忘(只是猜测)。您可以快速转换为命名属性,然后您就没有任何问题:
示例:
<asp:GridView ID="grdTest" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField HeaderText="Array Field" DataField="data" />
<asp:HyperLinkField DataNavigateUrlFields="data" DataNavigateUrlFormatString="RoleInformation.aspx?role={0}" Text="Manage users" />
</Columns>
</asp:GridView>
注意名为data
的字段。然后绑定你的数组就行:
string[] testArray = { "1", "2", "3" };
grdTest.DataSource = testArray.Select(a => new { data = a });
grdTest.DataBind();
它不直接替换!
,但它是一个简单的解决方案,可以绕过简单的数组,即使!
没有实现它也可能需要对于每种字段类型。