none
datagridviewcomboboxcolumn获取值得问题 RRS feed

  • 问题

  • datagridview已经绑定值了,datagridviewcomboboxcolumn下拉框在加载的时候就显示为这条数据对应的值

    比如数据库中有 姓名:某某 性别:男,datagridviewcomboboxcolumn的值就显示为男

    加载的时候选项值就是原有数据的那个值,请教这个怎么做?

    this.dataGridView1.Rows[i].Cells[2].Value = dt.Rows[i][0].ToString();

    这个写法是错误的,不知道怎么用?

    还有怎么给datagridviewcomboboxcolumn设置默认值?


    • 已编辑 heartg 2011年9月20日 15:36
    2011年9月20日 15:08

答案

  • 你好

    由於你的 cmb.ValueMember 是使用TypeNo 的關係

     DataGridViewComboBoxColumn cmb = new DataGridViewComboBoxColumn() { Name = "USERTYPE" };
                    cmb.DataSource = dt.DefaultView;
                    cmb.Name = "USERTYPE";
                    //cmb.DataPropertyName = "TYPENAME";
                    cmb.DisplayMember = "TYPENAME";
                    cmb.ValueMember = "TYPENO"; <-

    或者你可以嘗試把

       this.dataGridView2.Rows[0].Cells["USERTYPE"].Value = this.dataGridView2.Rows[0].Cells["TYPENAME"].Value;

    轉成

       this.dataGridView2.Rows[0].Cells["USERTYPE"].Value = this.dataGridView2.Rows[0].Cells["TYPENO"].Value;

    試試看

    因為Comobox 的值是 用Value Member的值來選的

    Please correct me if my concept is wrong


    Chi
    • 已标记为答案 heartg 2011年9月21日 5:56
    2011年9月21日 5:38

全部回复

  • 你好

    你有沒有定期 這個DataGridVIewComboBoxColumn的 

    DisplayMember 和ValueMember

    如果有的話應該是可以Assign value到 ComboBoxColumn上的 [你要確定你的]  dt.Rows[i][0].ToString(); 是和 this.dataGridView1.Rows[i].Cells[2].Value 的SelectedValue 入面其中一個value 一樣才可的

     

    E.G.

     

    ShareChiWai_Model Share_ChiWai = new ShareChiWai_Model();
                DataGridViewComboBoxColumn column = new DataGridViewComboBoxColumn() {  Name="DDL_FoodCat"};
    
                column.ValueMember = "FoodCategory_ID";
                column.DisplayMember = "FoodCategory_Name";
                column.DataSource = Share_ChiWai.Get_Food_Categories();
                dgv_Data.Columns.Add(column);
    
                dgv_Data.DataSource = Share_ChiWai.Get_Food_Tbl();
    
    //Assign Value to ComboBox
    
    dgv_Data.Rows[0].Cells["DDL_FoodCat"].Value = dgv_Data.Rows[0].Cells["FoodCategory_ID"].Value;
    

    Please correct me if my concept is wrong

     


    Chi
    2011年9月20日 21:31
  •         private void DataBindDataGridView()
            {
                string sqlString = "select * from USERTYPE";
                string sqlString1 = "select * from UserInfoView";
                DataSet ds = SqlHelper.GetDataSet(sqlString);
                DataTable dt1 = SqlHelper.GetDataTable(sqlString1);
                DataTable dt = SqlHelper.GetDataTable(sqlString);
                try
                {
                    DataView dvListViewInfo = new DataView(dt1);
                    this.dataGridView2.DataSource = dvListViewInfo;
                    DataGridViewComboBoxColumn cmb = new DataGridViewComboBoxColumn() { Name = "USERTYPE" };
                    cmb.DataSource = dt.DefaultView;
                    cmb.Name = "USERTYPE";
                    //cmb.DataPropertyName = "TYPENAME";
                    cmb.DisplayMember = "TYPENAME";
                    cmb.ValueMember = "TYPENO";
                    cmb.HeaderText = "角色";
                    this.dataGridView2.Columns.Add(cmb);
                    this.dataGridView2.Rows[0].Cells["USERTYPE"].Value = this.dataGridView2.Rows[0].Cells["TYPENAME"].Value;


                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
            }

     

    我是这么改的,可是总提示DataGridViewComboBoxCell值无效。

    this.dataGridView2.Rows[0].Cells["USERTYPE"]这个应该是我加的那列,DataGridView列的下标是从0开始吧?

     

     

    2011年9月21日 3:15
  • 你好

    由於你的 cmb.ValueMember 是使用TypeNo 的關係

     DataGridViewComboBoxColumn cmb = new DataGridViewComboBoxColumn() { Name = "USERTYPE" };
                    cmb.DataSource = dt.DefaultView;
                    cmb.Name = "USERTYPE";
                    //cmb.DataPropertyName = "TYPENAME";
                    cmb.DisplayMember = "TYPENAME";
                    cmb.ValueMember = "TYPENO"; <-

    或者你可以嘗試把

       this.dataGridView2.Rows[0].Cells["USERTYPE"].Value = this.dataGridView2.Rows[0].Cells["TYPENAME"].Value;

    轉成

       this.dataGridView2.Rows[0].Cells["USERTYPE"].Value = this.dataGridView2.Rows[0].Cells["TYPENO"].Value;

    試試看

    因為Comobox 的值是 用Value Member的值來選的

    Please correct me if my concept is wrong


    Chi
    • 已标记为答案 heartg 2011年9月21日 5:56
    2011年9月21日 5:38
  • OK了 太感谢了
    2011年9月21日 5:55