小女子刚进入个新团队就有人给我很难解决的技术点刁难我请各位帮忙啊!!!(周围高手同事们都解决不了)
左边是从数据库里取得的数据(字段A,字段B,字段C ,字段D)把这些数据绑定到DropDownList或者ListBox或者DataGrid都可以,具体绑定到哪个控件上未定,哪个控件方便实现就用哪个控件。
右边是个DataGrid
字段A 列1 列2 列3
字段B 行11 行12 行13
字段C 行21 行22 行23
字段D 。。。。。。。。。。
问题是用鼠标点住左边的字段数据拖到右边DataGrid中的列行上(列1,列2,列3)如何实现?
再仔细解说下
想要的具体效果是这样的
我先将字段B拖到列1上,DataGrid会去某个固定的表里将列1字段全部检索出来显示在行11,行21......,左边将不再有字段B
然后我将字段C拖到列2上,DataGrid会去某个固定的表里将列2字段全部检索出来显示在行12,行22......,左边将不再有字段C,做完这两步操作后,左边就剩下字段A和字段B,右边就显示列1和列2以及该字段的内容。
字段A 列1 列2
字段D 行11 行12
行21 行22
..........
[解决办法]
有点看明白了,
很少用2003的,现在用的是2005,不知道你的控件上有没有drop...(...是通配符,比如dropup,dropdown等)
这样的事件?向控件添加这些事件。就可以了,在拖拽的过程中回触发这些事件,你可以自己琢磨下!我也是个新手。
[解决办法]
[解决办法]
[解决办法]
这是两个listbox drag and drop的代码,你可以参考一下:
Two ListBoxes - Drag and Drop Example
http://www.codeproject.com/KB/combobox/LarryDragAndDrop.aspx
[解决办法]
以前用的时候绑定数据源后,显示的好像是全部数据,将数据单独拖放没试过,应该是不行的,在拖放事件里加SQL代码实现应该可以。
[解决办法]
可以考虑用mousedown和mouseup组合实现
在左边的控件的mousedown事件中获得要拖放的字段
在左边的控件的mouseup事件中通过e.x和e.y判断当前鼠标是否在右边的控件上
(注意这里的坐标是相对于左边控件的坐标,)
如果鼠标在右边控件上,该怎么写代码应该不用我教了,呵呵
[解决办法]
楼主要要web form ?web 就有难度了。
要是win form 就好办多了,
你可以参考一下:
Two ListBoxes - Drag and Drop Example
http://www.codeproject.com/KB/combobox/LarryDragAndDrop.aspx
主要是Drag and Drop 操作。
lz的头像引人遐想。
[解决办法]
现在还在用2003?我们现在都2005或者2008了,2003里面好多东西都2005强悍,建议楼主换2005或者2008
[解决办法]
MouseDown(object sender, MouseEventArgs e)
MouseUp(object sender, MouseEventArgs e)
MouseMove(object sender, MouseEventArgs e)
这三个函数的作用分别是鼠标按下时激活,鼠标松开激活和鼠标移动
需要考虑的情况如下
1. 只有在鼠标按下的时候才可以使用鼠标移动事件
2. 鼠标移动的时候控件重新调整位置
为了有效控制第一个条件,所以可以将鼠标移动事件的绑定推迟到鼠标按下事件中,而不是在初始化时完成,另外要记录下初始状态下鼠标位于控件中的坐标,这里注意MouseEventArgs参数中的X,Y表示的是鼠标在当前控件中的layout坐标,而不是鼠标在主窗口中的坐标。
rivate void button1_MouseDown(object sender, MouseEventArgs e)
{
this.tmpx = e.X;
this.tmpy = e.Y;
this.button1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.button1_MouseMove);
}
同时在鼠标送开事件中再将该方法绑定脱离
private void button1_MouseUp(object sender, MouseEventArgs e)
{
this.button1.MouseMove -= new System.Windows.Forms.MouseEventHandler(this.button1_MouseMove);
}
最后是MouseMove事件
private void button1_MouseMove(object sender, MouseEventArgs e)
{
this.button1.Location = new System.Drawing.Point(this.button1.Location.X + e.X - this.tmpx, this.button1.Location.Y + e.Y - this.tmpy);
}
这里重新计算了控件的新位置。
希望这个可以帮到你...