【问题标题】:Dynamic DataGrid Headers动态 DataGrid 标头
【发布时间】:2012-08-10 10:37:53
【问题描述】:

我有一个问题,我需要获取列的总数,它定义了总列。目前我有一个函数可以指示 DataGrid.columns 上的标题文本。

public static string ColumnHeader1 = Properties.Settings.Default.ColumnHeader1;

public void dataGridHeaders()
    {
        dataGrid.Columns[0].Header = ColumnHeader1;
        dataGrid.Columns[1].Header = ColumnHeader2;
        dataGrid.Columns[2].Header = ColumnHeader3;
        dataGrid.Columns[3].Header = ColumnHeader4;
        dataGrid.Columns[4].Header = ColumnHeader5;
        dataGrid.Columns[5].Header = ColumnHeader6;
        dataGrid.Columns[6].Header = ColumnHeader7;
        dataGrid.Columns[7].Header = ColumnHeader8;
     }

从 xml 设置文件中读取的字符串 vars。我要做的是取决于 xml 文件中有多少字符串描述了运行时将有多少列。或者添加一个 int var say..

public static int totalNumberOfColumns = 8; 

然后通过循环添加列。

这些方法中的任何一种都可能吗?

【问题讨论】:

    标签: c# wpf datagrid


    【解决方案1】:

    从 XML 文件中获取列标题到字符串列表中

    List<string> columnHeaderList = new List<string>();
    foreach (string header in XmlColumnList)
        columnHeaderList.Add(header);
    

    其中XmlColumnList 是一些保存值的数组。现在添加以下方法,该方法将根据需要添加所有可用的列标题。

    private void DataGridHeaders(List<string> headerList)
    {
        for (int i = 0; i < headerList.Count; i++)
            dataGrid.Columns[i].Header = headerList[i];
    }
    

    我希望这会有所帮助。

    【讨论】:

      【解决方案2】:
                  var xmlSample = @"<DataGridColumnsHeader>
                                  <ColumnHeaderText>Name</ColumnHeaderText>
                                  <ColumnHeaderText>Country</ColumnHeaderText>
                                  <ColumnHeaderText>Phone</ColumnHeaderText>
                                </DataGridColumns>";
      
              var counter = 0;
              var elementCount = XDocument.Load(new System.IO.StringReader(xmlSample)).XPathSelectElements("//ColumnHeaderText").Count();
              foreach (var element in XDocument.Load(new System.IO.StringReader(xmlSample)).XPathSelectElements("//ColumnHeaderText"))
              {
                  dataGrid.Columns[counter].Header = element.Value;
                  counter++;
              }
      

      希望这会有所帮助!

      【讨论】:

      • 我以不同的方式完成了它.. 并且很可能是最懒惰的方式.. 将包含所有值的完整字符串读取到一个数组中并将它们拆分。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-01
      • 1970-01-01
      • 2011-12-16
      • 1970-01-01
      • 2018-09-27
      • 2017-07-19
      相关资源
      最近更新 更多