如题:
1.我在 Form_Load 事件里写了个绑定datagridview的函数,动态绑定某表.这个表的某个字段DutyId,来自另外一个表.我想实现的功能是:这一列全部是用 ComboBox 来代替textbox,让用户来选择 "出勤情况".这个怎么实现?2.如果第一个问题解决了,在datagirdview里的哪个事件,可以得到当前编辑行的所有字段的值.如果我知道这个事件,我就可以修改结果集,再调用增加记录数据函数.完成想要功能.刚做 winform,哪位大哥帮忙给看看.挺着急的.谢啦.

解决方案 »

  1.   

    http://topic.csdn.net/t/20050217/16/3788056.html看看上面的帖子。。winform里米有模板列,不像asp.net。
      

  2.   

    http://blog.csdn.net/ojekleen/posts/1786151.aspx
      

  3.   

      this.dataGridView1.Columns.Insert(0, new DataGridViewCheckBoxColumn());            for (int i = 0; i < this.dataGridView1.Rows.Count - 1; i++)
                {
                    //为datagridviewcheckbox列赋值
                    this.dataGridView1.Rows[i].Cells[0].Value = false;
                }
      

  4.   

    1.
    你要在DataGridView用ComBox列时,得先给这一ComBox列绑定下拉框,然后再赋值.如,我datagridview1有一下拉框combox1:  
    //绑定datagridview  
    dataGridView1.DataSource   =   dt;  //绑定下拉框  
      combox1.DataSource   =   dt1;  
                            combox1.ValueMember   =   "0";  
                            combox1.DataPropertyName   =   "Color";//下拉框对应的绑定列2.通过DataGridView的CurrentRow属性,可以获得当前行.
      

  5.   

    private void AddEmployeeDuty_Load(object sender, EventArgs e)
    {
      this.BindData();
    }
    private void BindData()

      objDataSet = MSDMLProcess.GetInstance().GetRelatedRecordByParameters(null, objDataSet);
      //这个结果集里有一个字段来自另一个表
      objDataRow["EmpId"] = Convert.ToInt32(objEmpSet.Tables[0].Rows[i]["EmpId"]);
      objDataRow["EmpName"] = Convert.ToString(objEmpSet.Tables[0].Rows[i]["EmpName"]);
      objDataRow["DutyDate"] = this.dtpDutyDate.Value;
      objDataRow["DutyId"] = 0;  //就是这个字段  this.dgvResult.DataSource = objDataSet.Tables[0];
    }我就是想让这列用另一个表的内容来绑定,就想平时绑定一个 ComboBox 那样,另外第二个问题是 DataGridView 的哪个事件? 给贴点代码吧,谢谢啦.
      

  6.   

    两个问题都解决了,谢谢大家了.心情一下放松很多.把代码贴出来,共享一下.//Bind DutyTable data to DutyDate column
    string strSql = "SELECT * FROM DutyTable WHERE DutyId <> 0";
    DataSet tempSet = MSDMLProcess.GetInstance().GetRecordsDirectly(strSql, false);
    dgComoBoxColumn = new DataGridViewComboBoxColumn();
    dgComoBoxColumn.DataSource = tempSet.Tables[0];
    dgComoBoxColumn.DisplayMember = "DutyName";
    dgComoBoxColumn.ValueMember = "DutyId";
    dgComoBoxColumn.HeaderText = "出勤情况";
    dgvResult.Columns.Insert(4, dgComoBoxColumn);
    将本身这个表的那列隐藏掉,但赋值时,还要赋给结果集的对应列上.第二个问题:我是在 dgvResult_CellEndEdit 个事件里处理的.