C# 将列表转换为DataGridView
我正在尝试将字符串数组转换为DataGridView,但迄今为止收效甚微。下面的方法是为此目的而调用的,但它似乎没有返回任何表 在调试期间,我可以看到我从cont.GetAllEmployee获取了正确的值,但是当调试转到ConvertListToDataTablelist时,调试没有显示该方法,这是不寻常的 这是我当前的代码:C# 将列表转换为DataGridView,c#,datagridview,C#,Datagridview,我正在尝试将字符串数组转换为DataGridView,但迄今为止收效甚微。下面的方法是为此目的而调用的,但它似乎没有返回任何表 在调试期间,我可以看到我从cont.GetAllEmployee获取了正确的值,但是当调试转到ConvertListToDataTablelist时,调试没有显示该方法,这是不寻常的 这是我当前的代码: private DataTable ConvertListToDataTable(List<WindowsFormsApplication1.ServiceRef
private DataTable ConvertListToDataTable(List<WindowsFormsApplication1.ServiceReference1.ArrayOfString> list)
{
DataTable table = new DataTable();
List<string> columnNames = list[0];
for (int i = 0; i < columnNames.Count; i++)
{
table.Columns.Add(columnNames[i].ToString());
}
foreach (var array in list)
{
table.Rows.Add(array);
}
return table;
}
List <WindowsFormsApplication1.ServiceReference1.ArrayOfString> list = cont.GetAllEmployee();
dataGridView.DataSource = ConvertListToDataTable(list);
新行必须由DataTable.NewRow方法实例化,才能获得与DataTable具有相同方案的新DataRow
private DataTable ConvertListToDataTable(List<WindowsFormsApplication1.ServiceReference1.ArrayOfString> list)
{
DataTable table = new DataTable();
List<string> columnNames = list[0];
for (int i = 0; i < columnNames.Count; i++)
{
table.Columns.Add(columnNames[i].ToString());
}
foreach (var array in list)
{
var NewRow = table.NewRow();
for(int i = 0; i < columnNames.Count)
{
NewRow[columnNames[i]] = array[i];
}
table.Rows.Add(NewRow);
}
return table;
}
List <WindowsFormsApplication1.ServiceReference1.ArrayOfString> list = cont.GetAllEmployee();
dataGridView.DataSource = ConvertListToDataTable(list);
dataGridView.DataBind();
新行必须由DataTable.NewRow方法实例化,才能获得与DataTable具有相同方案的新DataRow
private DataTable ConvertListToDataTable(List<WindowsFormsApplication1.ServiceReference1.ArrayOfString> list)
{
DataTable table = new DataTable();
List<string> columnNames = list[0];
for (int i = 0; i < columnNames.Count; i++)
{
table.Columns.Add(columnNames[i].ToString());
}
foreach (var array in list)
{
var NewRow = table.NewRow();
for(int i = 0; i < columnNames.Count)
{
NewRow[columnNames[i]] = array[i];
}
table.Rows.Add(NewRow);
}
return table;
}
List <WindowsFormsApplication1.ServiceReference1.ArrayOfString> list = cont.GetAllEmployee();
dataGridView.DataSource = ConvertListToDataTable(list);
dataGridView.DataBind();
这似乎并没有解决问题,该方法仍然无法填充DataGridViewMethod,工作正常。您可以签入调试返回的DataTable的内容。您需要调用dataGrdiView.DataBind。仅在指定DataSourceID而不是DataSource属性时自动执行绑定。在所有其他情况下,必须显式调用DataBind。我应该在哪里调用DataBind?紧跟在dataGridView.DataSource=ConvertListToDataTablelist之后;我已经更新了我的答案。请检查代码。@Eldar你说的是ASP.NET数据网格。Winforms DataGridView没有。DataBind方法似乎无法解决问题,该方法仍然无法填充DataGridViewMethod。您可以签入调试返回的DataTable的内容。您需要调用dataGrdiView.DataBind。仅在指定DataSourceID而不是DataSource属性时自动执行绑定。在所有其他情况下,必须显式调用DataBind。我应该在哪里调用DataBind?紧跟在dataGridView.DataSource=ConvertListToDataTablelist之后;我已经更新了我的答案。请检查代码。@Eldar你说的是ASP.NET数据网格。Winforms DataGridView没有.DataBind方法为什么要将列表转换为DataTable?我认为您可以将列表用作数据源,而无需将其转换。不,您没有尝试转换为DataGridView。您正在尝试返回一张桌子。确实要调试该方法吗?请检查DataGridView.AutoGenerateColumns==True,然后如果代码在Form.Load事件处理程序中,则可能在函数中出现错误。如果是这样,那么将eventhandler的代码放入Try。。Catch blockDataGridView.AutoGenerateColumns==true解决了该问题。格雷西亚斯·法比奥!!为什么要将列表转换为DataTable?我认为您可以将列表用作数据源,而无需将其转换。不,您没有尝试转换为DataGridView。您正在尝试返回一张桌子。确实要调试该方法吗?请检查DataGridView.AutoGenerateColumns==True,然后如果代码在Form.Load事件处理程序中,则可能在函数中出现错误。如果是这样,那么将eventhandler的代码放入Try。。Catch blockDataGridView.AutoGenerateColumns==true解决了该问题。格雷西亚斯·法比奥!!