c# – 如何从数据集中设置DataGridViewComboBoxColumn值
发布时间:2020-12-15 17:26:08 所属栏目:百科 来源:网络整理
导读:假设我有两张桌子: work_hours work_hours_id | date | _project_id 1 1.2. 10 2 1.2. 11 3 1.2. 10 project project_id | project_name 10 pr1 11 pr2 12 pr3 在DataGridView中我想看到这个: work_hours_id | date | _person_id | project_name(DataGridV
假设我有两张桌子:
work_hours work_hours_id | date | _project_id 1 1.2. 10 2 1.2. 11 3 1.2. 10 project project_id | project_name 10 pr1 11 pr2 12 pr3 在DataGridView中我想看到这个: work_hours_id | date | _person_id | project_name(DataGridViewComboBoxColumn) 1 1.2. 10 pr1 2 1.2. 11 pr2 3 1.2. 10 pr1 我怎么能这样做? string query = "SELECT work_hours.work_hours_id,work_hours.date FROM work_hours LEFT OUTER JOIN project ON work_hours._project_id = project.project_id ORDER BY work_hours.date; SELECT * FROM project ORDER BY project_name"; SqlCommand sqlcmd = new SqlCommand(query,conn); da = new SqlDataAdapter(query,connectionString); cBuilder = new SqlCommandBuilder(da); dt = new DataTable(); ds = new DataSet(); da.Fill(dt); da.Fill(ds); DataGridViewComboBoxColumn columnCb = new DataGridViewComboBoxColumn(); columnCb.DataPropertyName = "_project_id"; columnCb.DataSource = ds.Tables[1]; columnCb.ValueMember = "project_id"; columnCb.DisplayMember = "project_name"; bSource = new BindingSource(); bSource.DataSource = dt; dataGridView1.DataSource = bSource; dataGridView1.Columns.Add(columnCb); 解决方法
如果我没有误解你想设置datagridview的组合框列的数据源..你可以这样设置:
/// if you use OfType Method then you will get advantage of to use as normal control /// means this method will give you advantage of can use all method and properties /// of the control which you want to implement in DataGridView /// Controls.OfType method will check all the columns and get an array with /// what you give as search criteria..here,the criteria is ComboboxColumn.. /// depends of your need you can give comboboxcell also.. /// Element at method selects the zero based index in array which filtered by criteria /// if you use only one of the given type then you can use .First() instead of .ElementAt() yourDataGridViewName.Controls.OfType<DataGridViewComboBoxColumn>() .ElementAt(indexNoOfTheDGVComboBox).DataSource = YourDataRetrievingMethod; //i.e. ds.Tables[indexNoOfTheTable].Columns[IndexOfTheColumn] /// and you can set DisplayMember and ValueMember as the same way.. /// i give combocell and combocolumn together to show the syntax. yourDataGridViewName.Controls.OfType<DataGridViewComboBoxCell>() .ElementAt(0).DisplayMember = "YourDisplay"; yourDataGridViewName.Controls.OfType<DataGridViewComboBoxCell>() .ElementAt(0).ValueMember = "YourValue"; 关于第二个问题..如果你问我,那么我更喜欢:要控制“意外节省”,在行的末尾放置一个buttonCell ..当用户更改某些行时,应单击保存按钮.然后在按钮单击方法可以保存更改为正常的插入或更新方法.. 只有2个差异.. 1-)你需要使用Cell_Click事件并确保使用OfType()方法而不是普通的Button _Click事件进行按钮检查 2-)取决于项目需求,您需要获取DataGridView的RowIndex和/或Cell Address()才能获取并将值传递给SQLQuery (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |