环境:vs2005 winform 问题: datagridview的第一列是checkbox列, checkbox列的checkbox选择后, 按照列头名排序后,选择的checkbox的值都会被清空的...我想实现的是别让选择的checkbox值清空, 保持原来的状态? 请大侠执教?
说明:我的排序是这么做的, datagridview的值以循环,存到datatable, 然后datatable.DefaltView来存到dataview,然后用sort来排序, 排序之后的在邦定到datagridview来显示...为了实现,我这种方法也试过...
datagridview的值以循环,存到datatable时,checkbox的值也存下来了...但这样出现这种问题, 比如,我选择了两个checkbox,但排序之后,选择的checkbox变成好几个了...
说明:我的排序是这么做的, datagridview的值以循环,存到datatable, 然后datatable.DefaltView来存到dataview,然后用sort来排序, 排序之后的在邦定到datagridview来显示...为了实现,我这种方法也试过...
datagridview的值以循环,存到datatable时,checkbox的值也存下来了...但这样出现这种问题, 比如,我选择了两个checkbox,但排序之后,选择的checkbox变成好几个了...
datagridview的值以循环,存到datatable时,checkbox的值也存下来了...但这样出现这种问题, 比如,我选择了两个checkbox,但排序之后,选择的checkbox变成好几个了... 这个就可行.
如果出现好几个,可能是你代码方面的问题.
你存的时候尽量让你选中的checkbox对应数据行里的唯一ID.
如果有的话,可以在点击checkBox的时候将这条信息的标志量存到一个预设的数组中,排序以后加载时比对一下,如果预设数组中有这个标志量,直接将其设为选中状态……
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;namespace WindowsFormsApplication76
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent(); DataTable DT = new DataTable();
DT.Columns.Add("c1"); DT.Rows.Add(new Object[] { 1 });
DT.Rows.Add(new Object[] { 2 });
DT.Rows.Add(new Object[] { 3 });
DT.Rows.Add(new Object[] { 4 });
DT.Rows.Add(new Object[] { 5 }); DataGridView DGV = new DataGridView();
DGV.Parent = this;
DGV.Dock = DockStyle.Fill;
DataGridViewTextBoxColumn TextColumn=new DataGridViewTextBoxColumn();
TextColumn.DataPropertyName = "c1";
TextColumn.SortMode = DataGridViewColumnSortMode.Automatic;
DGV.Columns.Add(TextColumn); DataGridViewCheckBoxColumn CheckBoxColumn = new DataGridViewCheckBoxColumn();
CheckBoxColumn.DataPropertyName = "temp";
DGV.Columns.Insert (0,CheckBoxColumn); DT.Columns.Add("temp");
DGV.DataSource = DT;
}
}
}
<你存的时候尽量让你选中的checkbox对应数据行里的唯一ID>
这句话不太懂,唯一ID怎么设置?
请详细说明好吗
谢谢
你把数据库中的主键一块查出来,能标识行不的一个列,排完序后,还能识别哪一行是哪一行.这样,你循环设置完各行的CheckBox,最后按照这个ID号,设置当前行的值不变.
dataGridView1.DataSource = 数据源;
{
if (this.dataGridView1.Columns[e.ColumnIndex].Name.Equals(""))
{
DataGridViewButtonCell dgvButtonCell = this.dataGridView1.Rows[e.RowIndex].Cells[" "] as DataGridViewButtonCell;
DataGridViewCheckBoxCell dgvCheckBoxCell = this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex] as DataGridViewCheckBoxCell;
//或dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].EditedFormattedValue.ToString() == "True"
string s = dgvCheckBoxCell.Value.ToString();
}
}
值变化是获取主键值,在重新绑定时,重新设置checkbox的选择属性
{
if (this.dataGridView1.Columns[e.ColumnIndex].Name.Equals(""))
{
DataGridViewButtonCell dgvButtonCell = this.dataGridView1.Rows[e.RowIndex].Cells[" "] as DataGridViewButtonCell;
DataGridViewCheckBoxCell dgvCheckBoxCell = this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex] as DataGridViewCheckBoxCell;
//或dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].EditedFormattedValue.ToString() == "True"
string s = dgvCheckBoxCell.Value.ToString();
}
}