首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

datagridview控件怎么同时选多条记录

2012-02-01 
datagridview控件如何同时选多条记录datagridview控件如何同时选多条记录呢, 我做一个窗体FORM1 ,和一个窗

datagridview控件如何同时选多条记录
datagridview控件如何同时选多条记录呢, 我做一个窗体FORM1 ,和一个窗体FORM2 ,每个窗体都有datagridview控件,我想在FORM1上的datagridview上同时选择5条记录,复制到FORM2控件上,这个例子有没有, 我想左键呢是选择,右键是放弃所有的选择,高人们,帮我看一下这个代码如何写,非常感谢. 冬天太冷,多穿衣服.

[解决办法]
让同时选多条记录:设置dataGridView1.MultiSelect = true;
复制多行:
List<model> modelList = new List<model>(); //存储复制的model(行)
void toolStripMenuItemCopy_Click(object sender, EventArgs e)
{
modelList.Clear();
if (dataGridView1.SelectedRows.Count > 0)
{
toolStripMenuItemPaste.Enabled = true;
toolStripMenuItemCopyEnabled = false;
for (int i = 0; i < dataGridView1.SelectedRows.Count; i++)
{
model modelTemp = new model(); 
tool.gridviewtomodel.Datagridview2Model(dataGridView1, modelTemp, Convert.ToInt32(dataGridView1.SelectedRows[i].Index));
modelTemp.字段= this.字段;
modelList.Add(modelTemp);
}
//设置此行的状态
foreach (DataGridViewRow dgvRow in dataGridView1.SelectedRows)
{ //复制时不用移除,剪切需要移除行
dataGridView1.Rows.Remove(dgvRow);

}
}
//黏贴
 void toolStripMenuItemPaste_Click(object sender, EventArgs e)
{
toolStripMenuItemCopy.Enabled = true;
toolStripMenuItemPaste.Enabled = false;

foreach (model modelTemp in modelList)
{
modelTemp.字段=字段;
ws_model.Update(modelTemp); //做更新操作
}
modelList.Clear();
}
[解决办法]
1、dataGridView1.MultiSelect = true;
2、在后台遍历并获取选中的多行,作为一个数据集传到form2中,作为form2的数据源即可
[解决办法]

C# code
//下面的代码 左键点击增加选择 右键取消选择,不知道有没有更好的办法private List<int> selectedRowsIndex = new List<int>();//用来存放选中的index        delegate void SetSelectState(bool deSelect, int rowIndex);        void RefreshTheSelectedStates(bool deSelect, int rowIndex)        {            try            {                foreach (int idx in selectedRowsIndex)                {                    dataGridView2.Rows[idx].Selected = true;                }                if (deSelect)                {                    dataGridView2.Rows[rowIndex].Selected = false;                }            }            finally            {                dataGridView1.Refresh();            }        }        private void dataGridView2_MouseDown(object sender, MouseEventArgs e)        {            DataGridView.HitTestInfo testInfo = dataGridView2.HitTest(e.X, e.Y);            int rowIdx = testInfo.RowIndex;            switch(e.Button)            {                case MouseButtons.Left:                    if (rowIdx >= 0)                    {                        if (!selectedRowsIndex.Contains(rowIdx))                            selectedRowsIndex.Add(rowIdx);                        dataGridView2.BeginInvoke(new SetSelectState(RefreshTheSelectedStates), false, 0);                    }                    break;                case MouseButtons.Right:                    if (rowIdx >= 0)                    {                        if (selectedRowsIndex.Contains(rowIdx))                            selectedRowsIndex.Remove(rowIdx);                        dataGridView2.BeginInvoke(new SetSelectState(RefreshTheSelectedStates), true, rowIdx);                    }                    break;            }        }
------解决方案--------------------


探讨

如果选中其中一个格子,整行都变选中的颜色,是用那一个属性呢

热点排行