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

本文关键字:字符串 填充 GridView 两个 何使用 | 更新日期: 2023-09-27 18:29:18

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

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

当您说Text='<%# Eval("Provider") %>时,您会得到Templatefield的错误原因。因此,它正在寻找源中不存在的属性/列名称Provider,因此会出现错误。

如果你想使这个字符串集合作为网格视图的源,那么完全删除这些模板字段,然后你可能说

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