【问题标题】:Bind DataGrid to List<Dictionary<string,string>>将 DataGrid 绑定到 List<Dictionary<string,string>>
【发布时间】:2015-06-14 12:02:15
【问题描述】:

我正在动态加载我的数据网格列,因为列数在运行时可能会有所不同。在ProdCatList 中检索到列名列表。我想模拟将单行添加到我的 QuotationDG 数据网格中。

这是我添加列的方法:

 foreach (ProductCategory ProdCat in ProdCatList)
 {
      DataGridColumn ProdCatColumn = new DataGridTextColumn {Binding = new Binding(ProdCat.Name)};
      ProdCatColumn.Header = ProdCat.Name;
       QuotationDG.Columns.Add(ProdCatColumn);
 }

这就是我尝试添加虚拟行的方式:

List<Dictionary<string, string>> mydictlist = new List<Dictionary<string,string>>();
Dictionary<string, string> mydict = new Dictionary<string, string>();
for (int i=0; i<ProdCatList.Count; i++)
{

    mydict.Add(ProdCatList[i].Name, ProdCatList[i].Name);
  }
  mydictlist.Add(mydict);

 QuotationDG.ItemsSource = mydictlist;
}

对于第一个代码,列显示正确,但对于第二个代码,一行被添加到 DataGrid,但名称(在字典值中)不显示并且所有列都是空白的。 如何修复此代码以显示添加行中的数据?

【问题讨论】:

    标签: c# silverlight datagrid


    【解决方案1】:

    如果你在循环之外定义 mydist 类型,它会使用相同的对象

    for (int i=0; i<ProdCatList.Count; i++)
    {
       Dictionary<string, string> mydict = new Dictionary<string, string>();
        mydict.Add(ProdCatList[i].Name, ProdCatList[i].Name);
    }
      mydictlist.Add(mydict);
    

    【讨论】:

    • 是的,但这是我需要做的,将多个键和值添加到同一个 mydict 对象。这样我就可以使用 mydict 表示我的行(有很多列)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-04
    • 1970-01-01
    • 2013-12-07
    • 1970-01-01
    • 2014-01-01
    • 2011-02-21
    • 1970-01-01
    相关资源
    最近更新 更多