【问题标题】:Why does not work binding DataSource with DataTable?为什么不能将 DataSource 与 DataTable 绑定?
【发布时间】:2018-01-28 00:58:08
【问题描述】:

我有从 DataTable 填充 Datagridview 的代码:

public void dataGridClientsLoad()
        {
            DataTable dt = new DataTable();

            dt = serviceSqlite.select(new Pacients());

            dataGridView1.DataSource = dt;

            //dataGridView2.Update();

            //dataGridView2.Refresh();

            label1.Text = "Все" + updateCountRows();

        }

dt 对象中,我得到了填充的行和列(参见图 1、图 2)。

但是结果,调用dataGridClientsLoad()后我的DataGridView是空的,为什么?

ServiceSqlite 是:

class SqliteService : ArraySelect
    {
        public SQLiteDatabase driver;

        public SqliteService() {

            SqliteConnection(new SQLiteDatabase());
        }

        public void SqliteConnection(SQLiteDatabase driver)
        {
            this.driver = driver;
        }

        public DataTable select(ISqlite select)
        {

            return select.select(driver);
        }
}

【问题讨论】:

  • 你试过dataGridView1.DataSource = dt.DefaultView();吗?
  • dt 没有 mrthod DefaultView()
  • 我试过了,不行
  • 它返回DataTable,见有问题的图片

标签: c# datagridview


【解决方案1】:

设置数据源为网格视图后需要使用DataBind()-

dataGridView1.DataBind();

将数据源绑定到 GridView 控件。此方法不能被继承。

使用 DataBind() 方法将数据从数据源绑定到 GridView 控件。此方法解析控件活动模板中的所有数据绑定表达式。参考MSDN

public void dataGridClientsLoad()
            {
                DataTable dt = new DataTable();

                dt = serviceSqlite.select(new Pacients());

                dataGridView1.DataSource = dt;
                dataGridView1.DataBind();//This require to bind data table.  

                label1.Text = "Все" + updateCountRows();

            }

【讨论】:

  • 不包含属性dataGridView1.DataBind();
  • 是网页应用还是windows?
  • 它是 Windows 应用程序
  • 绑定不适用于windows。
  • Bind 不适用于 windows DataGridDataGridView 是不同的控件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-17
  • 1970-01-01
相关资源
最近更新 更多