控件之DataGrid----实现自动添加新行和数据交换

控件之DataGrid----实现自动添加新行和数据交换,第1张

概述Silverlight的很多控件相对于VS的其他程序来说,还很不成熟,Datagrid就是其中一个,可能个人比较愚笨,经过好几天才把一些问题搞清楚了。   先描述一下自己这个测试程序的功能。   1,Datagrid上显示10条信息,在最后面另外显示一条空信息,当其中的内容被改变以后,这条信息存入数据源中,Datagrid的最后重新添加一行空信息 2,通过上下键实现数据的交换,比如当前选择的ind

Silverlight的很多控件相对于VS的其他程序来说,还很不成熟,DatagrID就是其中一个,可能个人比较愚笨,经过好几天才把一些问题搞清楚了。

 

先描述一下自己这个测试程序的功能。

 

1,DatagrID上显示10条信息,在最后面另外显示一条空信息,当其中的内容被改变以后,这条信息存入数据源中,DatagrID的最后重新添加一行空信息

2,通过上下键实现数据的交换,比如当前选择的index是5,按了向下的箭头之后,5和6交换,光标跟随5到6的位置上。

3,添加,插入,删除数据 *** 作

 

实现中出现的问题:

1,需要确定初始index,开始决定使用DatagrID的SelectionChanged事件来获取

 

private voID dg_SelectionChanged(object sender,SelectionChangedEventArgs e)
        {
           
            m_CurrentIndex = dg.Selectedindex ;
           
        }

 

然后在KeyUp事件中交换

 

问题出现了,每次按下上下键,Selectedindex都会改变,因此在KeyUp中的这个判断if (m_CurrentIndex != dg.Selectedindex)就失去了作用,不会响应。

然后考虑过使用MouseleftbuttonDown事件,但是这个事件居然只在表头才有作用...幸好随后又尝试了MouseleftbuttonUp事件,才顺利的实现了获取初始index的功能。

private voID dg_MouseleftbuttonUp(object sender,MousebuttonEventArgs e)
        {
            m_CurrentIndex = dg.Selectedindex;
        }

 

另外,键盘上的方向键也不响应DataGrID的KeyDown事件,而KenUp事件则是响应的,不知道为什么...

 

2,数据交换后更新DataGrID,这个是跟CSDN的达人们学习的

dg.ItemsSource = null;
dg.ItemsSource = tempSource;

先将数据源设置为null,然后重新设置数据源,OK,搞定

 

3,最后的空行不能交换,为实现这个功能,定义了两个数据列表

           

其中的source用来用来执行数据交换,tempSource作为dg的数据源,最后添加了空行,确保最后一行不被交换,用

if (dg.Selectedindex < source.Count - 1)进行判断。

 

 

完整代码: 

 

 
MainPage.cs

总结

以上是内存溢出为你收集整理的控件之DataGrid----实现自动添加新行和数据交换全部内容,希望文章能够帮你解决控件之DataGrid----实现自动添加新行和数据交换所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1035489.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存