求 DataGridview Row 资料任意上下移动对调 请问前辈们:我有一个 DataGridview 里面假设有 6笔资料 3攔 A B C123456我要如何做到用鼠标将这6笔资料任意上下移动对调呢? 那里有范例可以看呢?感谢~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 A B C[index0] 1 1 1[index1] 2 2 2[index2] 3 3 3[index3] 4 4 4[index4] 5 5 5 想要的效果,假设滑鼠点击[index0]左键不放,移动到[index4]才放开,资料应该变成如下: A B C[index0] 2 2 2[index1] 3 3 3[index2] 4 4 4[index3] 5 5 5 [index4] 1 1 1在ListBox 我可以作到,利用复制>删除>贴上可是DataGridview有好几栏,搞不懂~求救阿! 你的datagridview的数据是绑定的么?是的话,先处理绑定的数据源,对换后再绑定 DataGridview 的事件搞不定阿~有没有参考范例 /// <summary> /// 上一一条数据 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btn_up_Click(object sender, EventArgs e) { if (dgvCaseStateManage.SelectedRows.Count == 0) { CommonApp.FormMessageBox.Show(CommonApp.LoadMode.Prompt, "请选择要移动的数据"); this.Focus(); return; } int rowindex = dgvCaseStateManage.SelectedRows[0].Index; if (rowindex > 0) { mo.Csm_ID = dgvCaseStateManage.SelectedRows[0].Cells[0].Value.ToString(); mo.Csm_Oderid = int.Parse(dgvCaseStateManage.SelectedRows[0].Cells[2].Value.ToString()); model.Csm_ID = this.dgvCaseStateManage.Rows[rowindex - 1].Cells[0].Value.ToString(); model.Csm_Oderid = int.Parse(this.dgvCaseStateManage.Rows[rowindex - 1].Cells[2].Value.ToString()); opCaseState.Move(mo, model); GetAllWorkInfo(); foreach (DataGridViewRow dgvr in dgvCaseStateManage.SelectedRows) { dgvr.Selected = false; } dgvCaseStateManage.Rows[rowindex - 1].Selected = true; dgvCaseStateManage.CurrentCell = dgvCaseStateManage.Rows[rowindex - 1].Cells[1]; } } /// <summary> /// 下一一条数据 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btn_down_Click(object sender, EventArgs e) { DataTable dt = (DataTable)dgvCaseStateManage.DataSource; if (dgvCaseStateManage.SelectedRows.Count == 0) { CommonApp.FormMessageBox.Show(CommonApp.LoadMode.Prompt, "请选择要移动的数据"); this.Focus(); return; } int rowindex = dgvCaseStateManage.SelectedRows[0].Index; if (rowindex < dt.Rows.Count - 1) { mo.Csm_ID = dgvCaseStateManage.SelectedRows[0].Cells[0].Value.ToString(); mo.Csm_Name = dgvCaseStateManage.SelectedRows[0].Cells[1].Value.ToString(); mo.Csm_Oderid = int.Parse(dgvCaseStateManage.SelectedRows[0].Cells[2].Value.ToString()); model.Csm_ID = this.dgvCaseStateManage.Rows[rowindex + 1].Cells[0].Value.ToString(); model.Csm_Oderid = int.Parse(this.dgvCaseStateManage.Rows[rowindex + 1].Cells[2].Value.ToString()); opCaseState.Move(mo, model); GetAllWorkInfo(); foreach (DataGridViewRow dgvr in dgvCaseStateManage.SelectedRows) { dgvr.Selected = false; } dgvCaseStateManage.Rows[rowindex + 1].Selected = true; dgvCaseStateManage.CurrentCell = dgvCaseStateManage.Rows[rowindex + 1].Cells[1]; } }"update CaseStateManage set Csm_Oderid='{0}' where Csm_ID= '{1}'"; 使用directory.getcurrentdirectory获取路径是小写的,求助 数组按条件分组 各位大大.求教.关于自动播放音乐的设计. 如何将dataview中的数据绑定到listview 菜鸟关于vs2008的一些小问题 C#现有类的复制问题 大话设计模式 编码辅助工具(intellisense)提示窗口停留时间短,如何改正? 要在一个多文档的程序的几个窗口之间共享一个对象 求水晶报表的代码...... 如何判断checkbox的值是否为空? 求助:如何判断数据在不在表中!
[index0] 1 1 1
[index1] 2 2 2
[index2] 3 3 3
[index3] 4 4 4
[index4] 5 5 5 想要的效果,假设滑鼠点击[index0]左键不放,移动到[index4]才放开,资料应该变成如下: A B C
[index0] 2 2 2
[index1] 3 3 3
[index2] 4 4 4
[index3] 5 5 5
[index4] 1 1 1在ListBox 我可以作到,利用复制>删除>贴上
可是DataGridview有好几栏,搞不懂~求救阿!
/// 上一一条数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_up_Click(object sender, EventArgs e)
{
if (dgvCaseStateManage.SelectedRows.Count == 0)
{
CommonApp.FormMessageBox.Show(CommonApp.LoadMode.Prompt, "请选择要移动的数据");
this.Focus();
return;
}
int rowindex = dgvCaseStateManage.SelectedRows[0].Index;
if (rowindex > 0)
{ mo.Csm_ID = dgvCaseStateManage.SelectedRows[0].Cells[0].Value.ToString();
mo.Csm_Oderid = int.Parse(dgvCaseStateManage.SelectedRows[0].Cells[2].Value.ToString());
model.Csm_ID = this.dgvCaseStateManage.Rows[rowindex - 1].Cells[0].Value.ToString();
model.Csm_Oderid = int.Parse(this.dgvCaseStateManage.Rows[rowindex - 1].Cells[2].Value.ToString());
opCaseState.Move(mo, model); GetAllWorkInfo();
foreach (DataGridViewRow dgvr in dgvCaseStateManage.SelectedRows)
{
dgvr.Selected = false;
}
dgvCaseStateManage.Rows[rowindex - 1].Selected = true;
dgvCaseStateManage.CurrentCell = dgvCaseStateManage.Rows[rowindex - 1].Cells[1];
} }
/// <summary>
/// 下一一条数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_down_Click(object sender, EventArgs e)
{
DataTable dt = (DataTable)dgvCaseStateManage.DataSource;
if (dgvCaseStateManage.SelectedRows.Count == 0)
{
CommonApp.FormMessageBox.Show(CommonApp.LoadMode.Prompt, "请选择要移动的数据");
this.Focus();
return;
}
int rowindex = dgvCaseStateManage.SelectedRows[0].Index;
if (rowindex < dt.Rows.Count - 1)
{ mo.Csm_ID = dgvCaseStateManage.SelectedRows[0].Cells[0].Value.ToString();
mo.Csm_Name = dgvCaseStateManage.SelectedRows[0].Cells[1].Value.ToString();
mo.Csm_Oderid = int.Parse(dgvCaseStateManage.SelectedRows[0].Cells[2].Value.ToString()); model.Csm_ID = this.dgvCaseStateManage.Rows[rowindex + 1].Cells[0].Value.ToString();
model.Csm_Oderid = int.Parse(this.dgvCaseStateManage.Rows[rowindex + 1].Cells[2].Value.ToString());
opCaseState.Move(mo, model); GetAllWorkInfo();
foreach (DataGridViewRow dgvr in dgvCaseStateManage.SelectedRows)
{
dgvr.Selected = false;
}
dgvCaseStateManage.Rows[rowindex + 1].Selected = true;
dgvCaseStateManage.CurrentCell = dgvCaseStateManage.Rows[rowindex + 1].Cells[1];
} }
"update CaseStateManage set Csm_Oderid='{0}' where Csm_ID= '{1}'";