none
WINFORM 控件嵌套问题 RRS feed

  • 问题

  • 如题:在WINFORM开发中,有一个数据网格控件“DATAGRIDVIEW”,这个网格控件中有一列的类型为:“DataGridViewComboBoxColumn”,在做数据绑定的时候,就不能直接用datasource这个属性,请问:应该怎么办呢?
    2010年5月6日 6:58

答案

  • 在数据源控件datagridview上edit column 中可以将某一列的样式(ColumnType)改变为:DataGridViewComboBoxColumn,这个下拉框还有它有一个单独的属性Name我将它改为:box.

    这个datagridview有5列

    代码:

    string connString = "server=.;uid=****;password=****;database=school";
                    string sql = "select * from checkinfo";
                    SqlConnection conn = new SqlConnection(connString);
                    SqlDataAdapter da = new SqlDataAdapter(sql, conn);
                    DataTable dt = new DataTable();
                    da.Fill(dt);
                    this.dataGridView1.RowCount = dt.Rows.Count;//根据返回的数据创建控件的数据行!
                    for (int i = 0; i < dt.Rows.Count ; i++)
                    {
                     this.dataGridView1.Rows[i].Cells[0].Value=dt.Rows[i][0].ToString();
                     this.dataGridView1.Rows[i].Cells[1].Value = dt.Rows[i][1].ToString();
                     this.dataGridView1.Rows[i].Cells[2].Value = dt.Rows[i][2].ToString();
                     this.dataGridView1.Rows[i].Cells[3].Value = dt.Rows[i][3].ToString();//到这里都是显示正常的文本!
                    }

    第5列为下来框,绑定数据的代码如下:

                    this.TEACHERS.DataSource = dt;
                    this.TEACHERS.ValueMember = "数据库字段名";
                    this.TEACHERS.DisplayMember = "数据库字段名";

     

    2010年5月7日 3:55

全部回复

  • 你是怎么绑定的,

    column.DataSource = dt;
    column.ValueMember = "jsbh";
    column.DisplayMember = "jsmc";

    参照

    http://blog.csdn.net/zibaozhangyu/archive/2007/01/16/1484423.aspx

     

     


    努力+方法=成功
    2010年5月6日 7:30
  • 没有用。

    2010年5月6日 9:09
  • 上面的例子是符合你的问题描述的解决方案,如果你不能用,那么你应该是提问时没有描述比较重要,可以导致答案和一般情况不同的的细节。

    http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewcomboboxcolumn.datasource.aspx 这个例子比较详细一点,如果仍旧不使用的话,你需要详细描述你的问题,使得别人不需要站在你背后看一遍你的操作也可以在自己的计算机上重现问题。

     



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2010年5月6日 18:23
    版主
  • 我是这样做的:

     SqlDataAdapter da = new SqlDataAdapter(sql, conn);
                    DataTable dt = new DataTable();
                    da.Fill(dt);
                    this.dataGridView1.RowCount = dt.Rows.Count;//根据查得的数据,可以显示出数据空间有多少行
                    for (int i = 0; i < dt.Rows.Count ; i++)
                    {
                     this.dataGridView1.Rows[i].Cells[0].Value=dt.Rows[i][0].ToString();
                     this.dataGridView1.Rows[i].Cells[1].Value = dt.Rows[i][1].ToString();
                     this.dataGridView1.Rows[i].Cells[2].Value = dt.Rows[i][2].ToString();

                    正常的应该是在这一列里有个下拉框,但是,不知道怎么绑定数据!
                    }

    2010年5月7日 1:49
  • this problem I had been solved!It's easy!

    Thanks for you help!

    2010年5月7日 2:06
  • 非常高兴得知您已经成功解决了问题,可否共享您的代码以便让其他人可以参考?

    同时以便与我们或者您自己标记成为解决的Answer。谢谢

    2010年5月7日 2:58
    版主
  • 在数据源控件datagridview上edit column 中可以将某一列的样式(ColumnType)改变为:DataGridViewComboBoxColumn,这个下拉框还有它有一个单独的属性Name我将它改为:box.

    这个datagridview有5列

    代码:

    string connString = "server=.;uid=****;password=****;database=school";
                    string sql = "select * from checkinfo";
                    SqlConnection conn = new SqlConnection(connString);
                    SqlDataAdapter da = new SqlDataAdapter(sql, conn);
                    DataTable dt = new DataTable();
                    da.Fill(dt);
                    this.dataGridView1.RowCount = dt.Rows.Count;//根据返回的数据创建控件的数据行!
                    for (int i = 0; i < dt.Rows.Count ; i++)
                    {
                     this.dataGridView1.Rows[i].Cells[0].Value=dt.Rows[i][0].ToString();
                     this.dataGridView1.Rows[i].Cells[1].Value = dt.Rows[i][1].ToString();
                     this.dataGridView1.Rows[i].Cells[2].Value = dt.Rows[i][2].ToString();
                     this.dataGridView1.Rows[i].Cells[3].Value = dt.Rows[i][3].ToString();//到这里都是显示正常的文本!
                    }

    第5列为下来框,绑定数据的代码如下:

                    this.TEACHERS.DataSource = dt;
                    this.TEACHERS.ValueMember = "数据库字段名";
                    this.TEACHERS.DisplayMember = "数据库字段名";

     

    2010年5月7日 3:55