各位前辈好!\(^o^)/~ 小弟今日遇到个问题,百度了很久都没有找到比较好的解决方案,所以上论坛来求救一下:问题的背景是这样的:
工具:VS2008 SQL Server 2005
我在学习做一个数据库管理系统,简单的几张表,采用离线方式连接数据库,在vs2008添加了数据源。
然后现在有两个WPF窗口,其中一个(窗口1)有LIstView控件,另外一个窗口(窗口2)由窗口1的Button控件调用生成。
窗口2是用来修改数据库的数据。 现在问题是,当我窗口2修改成功后,但是窗口1的ListView并没有改动,需要手动刷新(我的手动刷新就是重新填充数据库的数据),或者是程序重启后才能看到。
不知道有什么方法可以即时更新呢?所以当要读取数据库的内容时,我采用的方式是:例如我要读取分数表:
StuMis_DataDataSet ds=new StuMis_DataDataSet ();
StuMis_DataDataSetTableAdapters.ScoreTableAdapter scortAdapter=
new StuMis.StuMis_DataDataSetTableAdapters.ScoreTableAdapter ();
DataView dview=new DataView();
scoreAdapter.Fill(ds.Score);
dview.Table = ds.Score;
listView1.ItemsSource = dview;ListView1的XML代码如下:
<ListView Margin="11,47,8,0" Name="listView1" Height="269" VerticalAlignment="Top" >
<ListView.View>
<GridView AllowsColumnReorder="True">
<GridViewColumn Width="90" DisplayMemberBinding="{Binding Path=StudentNum}" >
<GridViewColumn.Header>
<GridViewColumnHeader MouseDown="GridViewColumnHeader_MouseDoubleClick">学号</GridViewColumnHeader>
</GridViewColumn.Header>
</GridViewColumn>
<GridViewColumn Width="100" DisplayMemberBinding="{Binding Path=StudentName}">
<GridViewColumn.Header >
<GridViewColumnHeader MouseDown="GridViewColumnHeader_MouseDoubleClick">姓名</GridViewColumnHeader>
</GridViewColumn.Header>
</GridViewColumn>
<GridViewColumn Width="90" DisplayMemberBinding="{Binding Path=Score}">
<GridViewColumn.Header >
<GridViewColumnHeader MouseDown="GridViewColumnHeader_MouseDoubleClick">分数</GridViewColumnHeader>
</GridViewColumn.Header>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
其中的MouseDown="GridViewColumnHeader_MouseDoubleClick"是排序事件。
另外还有个问题:WPF里面貌似只有对整个ListView才有MouseDoubleClick事件,但是小弟我想双击某个Item就能产生事件的效果,不知道要怎么样才能做到。百度了一下有几种方法,貌似在WPF下都不能完成,有一种方法是:
{on doubleClick}If (ListView.SelectedItems.Count > 0) {//双击在Item上,然后对SelectedItems进行处理} else {//双击在空白处}本来以为这个方法可以,但结果还是不行,但你单击某个项的时候,然后不小心双击到其他地方(如快速点击滚动条的时候),这个时候还是会产生事件。
其他一些方法对于Form可能有用,但是在WPF里找不到相应的方法。 求助!!最后祝给位前辈五一快乐!!
工具:VS2008 SQL Server 2005
我在学习做一个数据库管理系统,简单的几张表,采用离线方式连接数据库,在vs2008添加了数据源。
然后现在有两个WPF窗口,其中一个(窗口1)有LIstView控件,另外一个窗口(窗口2)由窗口1的Button控件调用生成。
窗口2是用来修改数据库的数据。 现在问题是,当我窗口2修改成功后,但是窗口1的ListView并没有改动,需要手动刷新(我的手动刷新就是重新填充数据库的数据),或者是程序重启后才能看到。
不知道有什么方法可以即时更新呢?所以当要读取数据库的内容时,我采用的方式是:例如我要读取分数表:
StuMis_DataDataSet ds=new StuMis_DataDataSet ();
StuMis_DataDataSetTableAdapters.ScoreTableAdapter scortAdapter=
new StuMis.StuMis_DataDataSetTableAdapters.ScoreTableAdapter ();
DataView dview=new DataView();
scoreAdapter.Fill(ds.Score);
dview.Table = ds.Score;
listView1.ItemsSource = dview;ListView1的XML代码如下:
<ListView Margin="11,47,8,0" Name="listView1" Height="269" VerticalAlignment="Top" >
<ListView.View>
<GridView AllowsColumnReorder="True">
<GridViewColumn Width="90" DisplayMemberBinding="{Binding Path=StudentNum}" >
<GridViewColumn.Header>
<GridViewColumnHeader MouseDown="GridViewColumnHeader_MouseDoubleClick">学号</GridViewColumnHeader>
</GridViewColumn.Header>
</GridViewColumn>
<GridViewColumn Width="100" DisplayMemberBinding="{Binding Path=StudentName}">
<GridViewColumn.Header >
<GridViewColumnHeader MouseDown="GridViewColumnHeader_MouseDoubleClick">姓名</GridViewColumnHeader>
</GridViewColumn.Header>
</GridViewColumn>
<GridViewColumn Width="90" DisplayMemberBinding="{Binding Path=Score}">
<GridViewColumn.Header >
<GridViewColumnHeader MouseDown="GridViewColumnHeader_MouseDoubleClick">分数</GridViewColumnHeader>
</GridViewColumn.Header>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
其中的MouseDown="GridViewColumnHeader_MouseDoubleClick"是排序事件。
另外还有个问题:WPF里面貌似只有对整个ListView才有MouseDoubleClick事件,但是小弟我想双击某个Item就能产生事件的效果,不知道要怎么样才能做到。百度了一下有几种方法,貌似在WPF下都不能完成,有一种方法是:
{on doubleClick}If (ListView.SelectedItems.Count > 0) {//双击在Item上,然后对SelectedItems进行处理} else {//双击在空白处}本来以为这个方法可以,但结果还是不行,但你单击某个项的时候,然后不小心双击到其他地方(如快速点击滚动条的时候),这个时候还是会产生事件。
其他一些方法对于Form可能有用,但是在WPF里找不到相应的方法。 求助!!最后祝给位前辈五一快乐!!
解决方案 »
- vs2008应用程序发布时出错
- 关于批处理处理数据库更新的问题
- 急问,高手请教
- 未能加载文件或程序集
- 如何定义自己的数据格式
- Win98下自定义纸张大小单位不明确的问题?(全部可用分送上)
- 使用Serialport类连续扫描两次条形码,取得的信息是两个条形码连接的字符串
- 高手指教~~~在提交的SQL语句前面加了begin tran事务 结尾没有用commit tran 为什么也能出来结果集?
- .net框架是不是一个虚拟机???
- 怪问题,在MSDN中的关于控件缩放的代码Scale拿来自己用不了
- 程序中的接口怎么理解啊?能不能给我个通俗易懂的例子啊?
- winform richtextbox 换行符问题
你操作后要重新绑定下数据源
listView1.ItemsSource = dview;
也可以用依赖属性赋值或者命令
至于双击可以选择GridView