Nee*_*elp 6 c# datatable datagridview
有没有将行标题信息存储在数据表中,这样当我将它绑定到datagridview时,它会自动显示c#中的列标题和行标题?
据我所知,您希望将列名作为值添加到datatable/datagridview中.以下是Linqpad -Program,你可以轻松地将贴片复制到Linqpad中来玩.代码将列名添加到数据表的第一行.您可以轻松地将此数据表绑定到gridview - 但要注意数据表的每一列必须是string类型.
void Main()
{
GetDataTable().Dump();
}
public DataTable GetDataTable()
{
var dt = new DataTable();
dt.Columns.Add("Id", typeof(string)); // dt.Columns.Add("Id", typeof(int));
dt.Columns["Id"].Caption ="my id";
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Job", typeof(string));
dt.Rows.Add(GetHeaders(dt));
dt.Rows.Add(1, "Janeway", "Captain");
dt.Rows.Add(2, "Seven Of Nine", "nobody knows");
dt.Rows.Add(3, "Doctor", "Medical Officer");
return dt;
}
public DataRow GetHeaders(DataTable dt)
{
DataRow dataRow = dt.NewRow();
string[] columnNames = dt.Columns.Cast<DataColumn>()
.Select(x => x.ColumnName)
.ToArray();
columnNames.Dump();
dataRow.ItemArray = columnNames;
return dataRow;
}
Run Code Online (Sandbox Code Playgroud)

只要您可以使用基于行中数据的代码创建它们,我就可以使用 c# 在运行时添加它们。将一列添加到数据表并使用 foreach 循环遍历它。只要行数不是太多,此代码就会很快执行:
DataTable dt = new DataTable();
// code here to get your datatable
dt.Columns.Add("rowheader");
foreach (DataRow r in dt.Rows)
{
r["rowheader"] = "my nice row header";
}
Run Code Online (Sandbox Code Playgroud)
然后输出新的列行标题作为网格中的第一个单元格。
另一种解决方案是使用 sql 查询在结果集中返回“额外”列。例如:
Select *, 'my nice row header' as rowheader from myTable
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您可以让 SQL 完成所有工作。
| 归档时间: |
|
| 查看次数: |
38285 次 |
| 最近记录: |