关于gridview复选框多选问题

chen6676869 2012-08-18 02:21:36
RT

我想实现gridview前面设置成复选框,然后可以实现多个选择,不是全选,求实现步骤

最好附上代码感谢。
...全文
266 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lizhaoyin581 2013-05-17
  • 打赏
  • 举报
回复
引用 5 楼 buwanmei1991 的回复:

1、在GridView中某列中添加进复选框,相关的数据绑定设置成0或1进行绑定。 
2、添加事件(此代码为转载) 
        private void repositoryItemCheckEdit2_QueryCheckStateByValue(object sender, DevExpress.XtraEditors.Controls.QueryCheckStateByValueEventArgs e) 
        { 
            string val = ""; 
            if (e.Value != null) 
            { 
                val = e.Value.ToString(); 
            } 
            else 
            { 
                val = "True";//默认为选中 
            } 
            switch (val) 
            { 
                case "True": 
                    e.CheckState = CheckState.Checked; 
                    break; 
                case "False": 
                    e.CheckState = CheckState.Unchecked; 
                    break; 
                case "Yes": 
                    goto case "True"; 
                case "No": 
                    goto case "False"; 
                case "1": 
                    goto case "True"; 
                case "0": 
                    goto case "False"; 
                default: 
                    e.CheckState = CheckState.Checked; 
                    break; 
            } 
            e.Handled = true; 

        } 
3、这样就可以解决repositoryItemCheckEdit不能多选的问题 


这个没法解决多选,只能是全选
Samoul_iixx 2012-08-18
  • 打赏
  • 举报
回复

1、在GridView中某列中添加进复选框,相关的数据绑定设置成0或1进行绑定。
2、添加事件(此代码为转载)
private void repositoryItemCheckEdit2_QueryCheckStateByValue(object sender, DevExpress.XtraEditors.Controls.QueryCheckStateByValueEventArgs e)
{
string val = "";
if (e.Value != null)
{
val = e.Value.ToString();
}
else
{
val = "True";//默认为选中
}
switch (val)
{
case "True":
e.CheckState = CheckState.Checked;
break;
case "False":
e.CheckState = CheckState.Unchecked;
break;
case "Yes":
goto case "True";
case "No":
goto case "False";
case "1":
goto case "True";
case "0":
goto case "False";
default:
e.CheckState = CheckState.Checked;
break;
}
e.Handled = true;

}
3、这样就可以解决repositoryItemCheckEdit不能多选的问题


zhui22222 2012-08-18
  • 打赏
  • 举报
回复
往gridView的数据源
var table = gridControl.DataSource as DataTable;
添加一列类型是bool的,就可以出现选择框了
chen6676869 2012-08-18
  • 打赏
  • 举报
回复
我要的是gridcontrol控件的gridview - - 理解错了
Samoul_iixx 2012-08-18
  • 打赏
  • 举报
回复

首先在第一列增加一个CheckBox控件,然后通过相关的事件,调整其位置,并相应对应的单击全选操作

CheckBox HeaderCheckBox = null;
public FrmNormalGridViewSelect()
{
InitializeComponent();

if (!this.DesignMode)
{
HeaderCheckBox = new CheckBox();
HeaderCheckBox.Size = new Size(15, 15);
this.dgvSelectAll.Controls.Add(HeaderCheckBox);

HeaderCheckBox.KeyUp += new KeyEventHandler(HeaderCheckBox_KeyUp);
HeaderCheckBox.MouseClick += new MouseEventHandler(HeaderCheckBox_MouseClick);
dgvSelectAll.CurrentCellDirtyStateChanged += new EventHandler(dgvSelectAll_CurrentCellDirtyStateChanged);
dgvSelectAll.CellPainting += new DataGridViewCellPaintingEventHandler(dgvSelectAll_CellPainting);
}
}



事件实现了CheckBox重绘调整,并处理单击事件

private void HeaderCheckBox_MouseClick(object sender, MouseEventArgs e)
{
HeaderCheckBoxClick((CheckBox)sender);
}

private void dgvSelectAll_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
if (e.RowIndex == -1 && e.ColumnIndex == 0)
ResetHeaderCheckBoxLocation(e.ColumnIndex, e.RowIndex);
}

private void ResetHeaderCheckBoxLocation(int ColumnIndex, int RowIndex)
{
Rectangle oRectangle = this.dgvSelectAll.GetCellDisplayRectangle(ColumnIndex, RowIndex, true);
Point oPoint = new Point();
oPoint.X = oRectangle.Location.X + (oRectangle.Width - HeaderCheckBox.Width) / 2 + 1;
oPoint.Y = oRectangle.Location.Y + (oRectangle.Height - HeaderCheckBox.Height) / 2 + 1;
HeaderCheckBox.Location = oPoint;
}

private void HeaderCheckBoxClick(CheckBox HCheckBox)
{
foreach (DataGridViewRow Row in dgvSelectAll.Rows)
{
((DataGridViewCheckBoxCell)Row.Cells["chkBxSelect"]).Value = HCheckBox.Checked;
}
dgvSelectAll.RefreshEdit();
}

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧