Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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# - Fatal编程技术网

c#-数据集和DataGridView

c#-数据集和DataGridView,c#,C#,我制作了一个基本程序,用于向数据集添加值并将其显示到dataGridView: public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { DataTable table1 = new DataTable("Peop

我制作了一个基本程序,用于向数据集添加值并将其显示到dataGridView:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        DataTable table1 = new DataTable("People");
        table1.Columns.Add("id");
        table1.Columns.Add("Name");
        table1.Columns.Add("Age");
        table1.Rows.Add(1, "Jack", 18);
        table1.Rows.Add(2, "Tim", 18);

        DataSet set = new DataSet("SetPeople");
        set.Tables.Add(table1);

        dataGridView1.DataSource = set;
        dataGridView1.Update();
    }
}
当我尝试它时,似乎什么都没有发生。dataGridView仍为空。知道我哪里出错了吗?

试试这个

   dataGridView1.DataSource = table1;
仅在Gridview中显示数据表不需要Ds

   dataGridView1.DataSource = table1;

仅在Gridview中显示数据表并不需要Ds,Massimiliano Peluso是正确的。GridView将引用一个“表”,但更具体地说,当以断开连接的方式使用ADO.NET时,您将使用属于DataTable对象的DataColumn对象填充GridView。您还需要将dataTable绑定到GridView

一点细节: Net的数据集结构允许您以类似“表”的方式表示数据库,并允许这些表共享引用。所有这些都是以额外的内存开销为代价的,但是如果这不是一个高度可扩展的应用程序,并且您想让用户能够编辑行而不必每次都访问数据库,那么DataSet是一个不错的选择

如果不使用DataSet的功能(例如表关系),只需使用DataTable对象并填充它们,就可以节省一些开销

回答您的问题:

GridView希望接收数据表作为数据源。该表可以包含多个列(将填充网格中的列)。您可以编写以下代码来专门访问数据表:

dataGridView1.DataSource = set.Tables["table1"]; // or by index if you prefer as there are several overloads.
此外,我将通过在上面描述的代码之后添加以下代码行来绑定数据:

dataGridView1.DataBind();
缺少DataBind()方法调用是问题的一部分


有一个很好的例子在C尖角网站:

马西米利亚诺·佩卢索是正确的。GridView将引用一个“表”,但更具体地说,当以断开连接的方式使用ADO.NET时,您将使用属于DataTable对象的DataColumn对象填充GridView。您还需要将dataTable绑定到GridView

一点细节: Net的数据集结构允许您以类似“表”的方式表示数据库,并允许这些表共享引用。所有这些都是以额外的内存开销为代价的,但是如果这不是一个高度可扩展的应用程序,并且您想让用户能够编辑行而不必每次都访问数据库,那么DataSet是一个不错的选择

如果不使用DataSet的功能(例如表关系),只需使用DataTable对象并填充它们,就可以节省一些开销

回答您的问题:

GridView希望接收数据表作为数据源。该表可以包含多个列(将填充网格中的列)。您可以编写以下代码来专门访问数据表:

dataGridView1.DataSource = set.Tables["table1"]; // or by index if you prefer as there are several overloads.
此外,我将通过在上面描述的代码之后添加以下代码行来绑定数据:

dataGridView1.DataBind();
缺少DataBind()方法调用是问题的一部分

在C尖角现场有一个很好的例子:

您也可以这样做:

您也可以这样做: