如何使用两个字符串值填充GridView

时间:2016-01-06 19:51:27

标签: c# asp.net gridview

<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列。

1 个答案:

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