Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将列表转换为DataGridView_C#_Datagridview - Fatal编程技术网

C# 将列表转换为DataGridView

C# 将列表转换为DataGridView,c#,datagridview,C#,Datagridview,我正在尝试将字符串数组转换为DataGridView,但迄今为止收效甚微。下面的方法是为此目的而调用的,但它似乎没有返回任何表 在调试期间,我可以看到我从cont.GetAllEmployee获取了正确的值,但是当调试转到ConvertListToDataTablelist时,调试没有显示该方法,这是不寻常的 这是我当前的代码: private DataTable ConvertListToDataTable(List<WindowsFormsApplication1.ServiceRef

我正在尝试将字符串数组转换为DataGridView,但迄今为止收效甚微。下面的方法是为此目的而调用的,但它似乎没有返回任何表

在调试期间,我可以看到我从cont.GetAllEmployee获取了正确的值,但是当调试转到ConvertListToDataTablelist时,调试没有显示该方法,这是不寻常的

这是我当前的代码:

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解决了该问题。格雷西亚斯·法比奥!!