我是C#的新手,我之前从未使用过DataTable。
我想要一个具有特定名称的DataGridView。
conda env update -f file.yml --prune
列应具有 xName。
的名称我该怎么做?
我试过这个:
DataTable table = new DataTable();
List<string> bla = new List<string>();
XDocument config = XDocument.Load(configFile);
Dictionary<string, string> dict = config.Descendants("Columns").FirstOrDefault().Elements()
.GroupBy(x => (string)x.Attribute("XPath"), y => (string)y.Attribute("Name"))
.ToDictionary(x => x.Key, y => y.FirstOrDefault());
//I dont know if I need this:
foreach (string key in dict.Keys)
{
table.Columns.Add(key, typeof(string));
}
foreach (XElement position in positions.Where(e => e.HasAttributes))
{
foreach (XAttribute attribute in position.Attributes().Where(a => dict.ContainsKey($"@{a.Name.LocalName}")))
{
string name = attribute.Name.LocalName;
string value = (string)attribute;
string xName = dict["@" + name];
bla.Add(xName);
}
只需要 xName 中的名称作为输出的标题。
示例fürxName:位置,状态,订单,编号,... 作为我的标题。 在那个价值观之下。
答案 0 :(得分:1)
如果我理解正确,你的列名列表可以,但不知道如何使用正确的列名创建数据表。
下面是如何将列和行添加到具有特定列标题名称的数据表的示例。
正如评论中所讨论的,我已经展示了一个过程,可以将您需要的数据导入到允许您填充表格的结构中。
//Class to hold data
public class MyRecordContent
{
public MyRecordContent()
{
//initialise list
RecordsColumns = new List<string>();
}
//Holds a list of strings for each column of the record.
//It starts at position 0 to however many columns you have
public List<string> RecordsColumns { get; set; }
}
//This creates an empty table with the columns
var myTable = new DataTable("Table1");
foreach (var item in bla)
{
if (!myTable.Columns.Contains(item))
{
myTable.Columns.Add(new DataColumn(item, typeof(string)));
}
}
//Here you build up a list of all records and their field content from your xml.
foreach (var xmlNode in yourXMLRecordCollection)
{
var thisRecord = new MyRecordContent();
foreach (var xmlCol in xmlNode.Elements)//Each column value
{
thisRecord.RecordsColumns.Add(xmlCol.GetValue());
}
myListOfRecords.Add(thisRecord);
}
foreach (MyRecordContent record in myListOfRecords)
{
var row = myTable.NewRow();
//Here we set each row column values in the datatable.
//Map each rows column value to be the value in the list at same position.
for (var colPosition = 0; colPosition <= myTable.Columns.Count - 1;) //Number of columns added.
{
row[colPosition] = record.RecordsColumns[colPosition];
}
myTable.Rows.Add(row);
}
在上面,检查列名列表并将每列添加到表中。您可能希望在循环中添加switch语句,以根据需要更改列的数据类型。然后从该表创建新行并相应地设置每个字段值。 最后,将新行添加到数据表中。
希望有所帮助。
然后