<asp:GridView ID="gvData" EmptyDataText="No data to display" ClientIDMode="Static" runat="server" AutoGenerateColumns="false" CssClass="gvData">
<Columns>
<asp:TemplateField HeaderText="Content">
<ItemTemplate>
<asp:Label ID="lblID" runat="server" ClientIDMode="Static" Text='<%# Eval("Provider") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="In Collection(s)">
<ItemTemplate>
<asp:Label ID="lblID" runat="server" ClientIDMode="Static" Text='<%# Eval("Collection") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
C#:
strCollFinalized = ddlContent.SelectedValue + "," + CheckInCollection(Convert.ToInt64(ddlContent.SelectedItem.Value)); //returns two string values
string[] strL = strCollFinalized.Split(',');
gvData.DataSource = strL;
gvData.DataBind();
上面的代码给出了一个错误:
DataBinding: 'System.String' does not contain a property with the name 'Provider'.
如何将第一个字符串填充到Provider
列,将第二个字符串填充到Collection
列。
答案 0 :(得分:2)
当您说Templatefield
时,您的Text='<%# Eval("Provider") %>
会出现错误原因。所以它在源中寻找属性/列名Provider
,这个名称不存在,因此错误。
如果你想把这个字符串集合作为gridview的源代码,那么完全删除那些模板字段然后你可以说
List<string> strL = strCollFinalized.Split(',').ToList();
gvData.DataSource = strL;
gvData.DataBind();
另一种方法是创建DataTable
之类的
DataTable dt = new DataTable();
DataColumn dc = new Datacolumn("Provider");
DataColumn dc1 = new Datacolumn("Collection");
dt.columns.Add(dc);
dt.columns.Add(dc1);
DataRow dr = dt.NewRow();
dr[dc] = ddlContent.SelectedValue;
dr[dc1] = CheckInCollection(Convert.ToInt64(ddlContent.SelectedItem.Value));
dt.Rows.Add(dr);
gvData.DataSource = dt;
gvData.DataBind();