DataGridView(DataGridViewComboBoxCell)总结
花了两天时间,终于对 DataGridView 有了一点了解,为了赚点分,拿出来和大家分享分享^O^
1. 获得当前选中行:
int rowIndex = this.dataGridView1.CurrentCell.RowIndex;
2. 为 DataGridView 中添加一行数据:
如果 DataGridView 的 Cells 是 DataGridViewTextBoxCellde
this.dataGridView1.Rows.Add(“value1”,”value2”,”valueN”);的方式添加。
如果 DataGridView 的 Cells 中包含 DataGridViewComboBoxCell
int index = this.dataGridView1.Rows.Add();
DataGridViewRow dataGridRow = this.dataGridView1.Rows[index];
DataGridViewComboBoxCell dataGridViewCbo = row.Cells[dataGridViewCbo_index] as DataGridViewComboBoxCell;
if (dataGridViewCbo != null)
{
}
dataGridViewCbo.Items.Add("itemValue1");
dataGridViewCbo.Items.Add("itemValue2");
dataGridViewCbo.Items.Add("itemValue3");
row.Cells[next_Index].Value = " Value2";
row.Cells[next_Index].Value = " Value3";
row.Cells[next_Index].Value = " ValueN";
3. 为DataGridView中DataGridViewComboBoxCell数据绑定:
DataSet dataSet = null;
using (SqlConnection connection = new SqlConnection("Data Source=忧伤的一点~;Initial
Catalog=test;Integrated Security=SSPI"))
{
}
dataSet = new DataSet();
SqlDataAdapter ss = new SqlDataAdapter("select * from test", connection); ;
ss.Fill(dataSet);
InitializeComponent();
DataGridViewComboBoxColumn dataCridCbo = this.dataGridView1.Columns["列名"] as
DataGridViewComboBoxColumn;
dataCridCbo.DataSource = dataSet.Tables[0];
dataCridCbo.DataPropertyName = "绑定数据的列名";
dataCridCbo.ValueMember = "绑定数据的列名";
4. 得到DataGridView中的值
this.dataGridView1.Rows[row].Cells[col].Value.ToString();
5. 为DataGridView中DataGridViewComboBoxCell添加默认值
在dataGridView中的RowsAdded(在一行或多行添加到集合时引发)事件中添加
//((DataGridView)sender).Rows[e.RowIndex].Cells[index].Style.NullValue = "默认值";
private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
}
((DataGridView)sender).Rows[e.RowIndex].Cells[0].Style.NullValue =
"默认值";
//通过getDataGridViewValue得到值
private string getDataGridViewValue(int col,int row)
{
}
try
{
}
return this.dataGridView1.Rows[row].Cells[col].Value.ToString();
catch (Exception ex)
{
}
return this.dataGridView1.Rows[row].Cells[col].Style.NullValue.ToString();
6. 为DataGridView中DataGridViewComboBoxCell添加事件
在dataGridView中的EditingControlShowing(显示用于编辑单元格的控件时发生)中添加
try
{
//
//
//
//
if (((ComboBox)e.Control).ValueMember == "persent")
((ComboBox)e.Control).SelectedIndexChanged += new
EventHandler(CreateRomMessages_SelectedIndexChanged);
//
//
}
catch { }
// 也许是功力不够,反正我打死也找不到在直接加事件的方法=。=
public DataCridCboTest()
{
}
InitializeComponent();
DataGridViewComboBoxColumn dataCridCbo = this.dataGridView1.Columns["列名"] as DataGridViewComboBoxColumn;
dataCridCbo.ValueMember = "绑定数据的列名";
this.dataGridView1.EditingControlShowing += new
DataGridViewEditingControlShowingEventHandler(dataGridView1_EditingControlShowing);
void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
try
{
//在判断是哪个ComboBox的时候,需要用Valuemember来判断。
if (((ComboBox)e.Control).ValueMember == "绑定数据的列名")
//如果是希望得到的ComboBox的话,注册ComboBox事件
((ComboBox)e.Control).SelectedIndexChanged += new
EventHandler(CreateRomMessages_SelectedIndexChanged);
}catch { }
}
void CreateRomMessages_SelectedIndexChanged(object sender, EventArgs e)
{
}
MessageBox.Show(((ComboBox)sender).Text);
7. 为DataGridView中DataGridViewComboBoxCell添加 Item
//绑定了数据源需要清除绑定!
index = this.dataGridView1.Rows.Add();
DataGridViewRow row = this.dataGridView1.Rows[index];
DataGridViewComboBoxCell dataGridViewCbo = row.Cells[0] as DataGridViewComboBoxCell;
if (dataGridViewCbo != null)
{
}
//备份数据;
object[] tempArray = new object[ dataGridViewCbo.Items.Count];
dataGridViewCbo.Items.CopyTo(tempArray, 0);
string[] valueArray = new string[tempArray.Length];
for (int i = 0; i < tempArray.Length; i++)
{
}
valueArray[i] = ((DataRowView)tempArray[i]).Row.ItemArray[0].ToString();
dataGridViewCbo.DataSource = null;
//绑定了数据源需要清除绑定!
dataGridViewCbo.Items.AddRange(valueArray);
//载入备份的数据;
dataGridViewCbo.Items.Add("aaa");
dataGridViewCbo.Items.Add("bbb");