DEV Gridcontrol 多选功能实现
1.设置一列 添加一列,FieldName为 "check",将ColumnEdit 设置为 复选框 样式。gridview1。editable设置为true
2.在数据源中加一列"check",
//在表中增加一个列 add(列名,列类型)
db.Columns.Add("check", typeof(bool));
//给每一行的该列赋值
for (int i = 0; i < db.Rows.Count; i++)
{
db.Rows[i]["check"] = "false";
}
注意:新增列的类型为bool类型
3.设置一下两个属性(第二个貌似不设置也可以):
gridView1 .OptionsSelection.MultiSelect = true;
gridView1 .OptionsSelection.MultiSelectMode = DevExpress.XtraGrid.Views.Grid.GridMultiSelectMode.RowSelect;
fieldname需要绑定,同时gridcontrol绑定的数据源dataset或者datatable中要有el dname这一列!!否则,也会出现,无法多选的现象
只有在复选框失去焦点后才可以读值的解决方案
private void gridView1_CellValueChanging(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
{
gridView1.SetRowCellValue(e.RowHandle, e.Column,e.Value);
}
4全选,加一个checkEdit
private void checkEdit1_CheckedChanged(object sender, EventArgs e)
{
string m_className;
if ((bool)checkEditAll.EditValue == true)
{
for (int i = 0; i < gridView1.RowCount; i++)
{
gridView1.SetRowCellValue(i, gridView1.Columns["check"], true);
}
m_className = "";
for (int i = 0; i < gridView1.RowCount; i++)
{
string name = gridView1.GetDataRow(i)["tooltpid"].ToString();
// string name = gridView1.GetRowCellValue(i, gridView1.Columns["tooltpid"]);// value = gridView1.GetDataRow(i)["check"].ToString(); gridView1.GetRowCellValue(i, gridView1.Columns["tooltpid"]);//
if (m_className == "")
{
m_className += name;
}
else
{
m_className += ",";
m_className += name;
}
}
labelControl1.Text = m_className;
}
else if ((bool)checkEditAll.EditValue == false)
{
for (int i = 0; i < gridView1.RowCount; i++)
{
gridView1.SetRowCellValue(i, gridView1.Columns["check"], false);
}
m_className = "";
labelControl1.Text = m_className;
}
gridControl1.RefreshDataSource();
}