【问题标题】:Bind GridView from dictionary asp.net C#从字典 asp.net C# 绑定 GridView
【发布时间】:2020-07-24 16:32:52
【问题描述】:

我设法用我的字典以经典方式填充我的 gridview,但我想做的是将键放在列中,将值放在行中,而不是使用带有两列键的经典视图 |价值。

因此,我尝试将列添加到 gridview,但出现错误“在所选数据源中找不到字段或属性'employee_type'。”

我想我已经阅读了所有类似的主题,但没有一个能解释我的问题

感谢您的帮助

我的 aspx.cs

protected void Page_Load(object sender, EventArgs e)
        {
            Dictionary<string, string> dico = new Dictionary<string, string>();
 
            dico.Add("type_employe","salarié");
            dico.Add("Nom","Doe");
            dico.Add("Prenom","John");
            GridView1.DataSource = dico;
            GridView1.DataBind();
        }

我的 aspx

<body>
    <form id="form1" runat="server">
        <div>
            <asp:GridView ID="GridView1" runat="server">
                <Columns>
                    <asp:BoundField DataField="type_employe" HeaderText="Type employé" />
                    <asp:BoundField DataField="Nom" HeaderText="Nom"  />      
                    <asp:BoundField DataField="Prenom" HeaderText="Prenom"  />
                </Columns>
            </asp:GridView>
        </div>
    </form>
</body>

【问题讨论】:

  • 绑定字典有一些限制,你看过这个吗? stackoverflow.com/questions/4627143/…
  • 数据字段是type_employe,而不是错误消息中显示的employee_type
  • @derloopkat 抱歉,这是因为翻译。
  • @Pete-S- 是的,我已经看过了,但我不太明白,因为当我在数据源上设置 iEnumerable 时,我遇到了同样的问题,而不是两列 key|Value i' ve 容量|计数

标签: c# asp.net dictionary gridview


【解决方案1】:

尝试将AutoGenerateColumns设置为false,您可以在GridView中使用字典中的KeyValue,如下所示:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
    <Columns>
        <asp:BoundField DataField="Key" />
        <asp:BoundField DataField="Value" />
    </Columns>
</asp:GridView>

如果您需要自定义 HeaderText,您可以尝试为您的字典值使用自定义对象,然后您将能够在 GridView 列中使用该对象的自定义属性。示例见this answer

【讨论】:

  • 感谢您的回答,我已经尝试将 AutoGenerateColumns 设置为 false 并且我遇到了同样的错误。我看到了您给出的答案,但我想知道是否可以在不创建自定义对象的情况下执行他在答案示例中所做的事情。我真的很想知道为什么会出现这个错误
猜你喜欢
  • 1970-01-01
  • 2013-11-28
  • 2012-05-09
  • 2011-02-28
  • 2011-06-05
  • 2011-07-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多