1你看下是不是在关闭数据库之后进行的添加等 *** 作
2 *** 作完listview之后 应该刷新一下 lixtviewitemsclear()清空原有数据 再把数据库信息add到listview中
SqlDataReader dr=cmdSelExecuteReader();
首先将数据从数据库中取出,放到dr对象中,这个相信你会
while(drRead())
{
ListViewItem lstViewItem=new ListViewItem(); //建立一个listviewitem对象
lstViewItemSubItemsClear();
lstViewItemSubItems[0]Text=dr["tid"]ToString(); //表示listview中的第一行
lstViewItemSubItemsAdd(dr["name"]ToString()); //第一行的第二例数据
lstViewItemSubItemsAdd(dr["mobilePhone"]ToString());//
lstViewItemSubItemsAdd(dr["homePhone"]ToString());
lstViewItemSubItemsAdd(dr["officePhone"]ToString());
lstViewItemSubItemsAdd(dr["email"]ToString());
lstViewItemSubItemsAdd(dr["phoneGroup"]ToString());
//上面的数据都是放到listview的第一行里的,如果有第二行来个循环就可以
thislstViewResultItemsAdd(lstViewItem); //将上面的数据放到listview中
ListView没办法这样干,你用DataGirdView,单击就行了,ListView不能编辑
哎,哥们,我也不知道你是不是知道用这个DataGirdView控件,但就要的是题中所说的需求,ListView是一定不行的,写了挺长时间,能不能用得上,希望你读一下。
用DataGirdView大致可以这样实现(我没用三层,只给你说明作用):
1,在你的窗体上拽个DataGirdView出来,起名:如dgvQuestionList
2,在窗体后台代码文件中声明两个全局对象(因为在你修改的时候,还要用这两个对象,所以声明为全局的)
DataSet set = new DataSet("MyQuestion"); //用来存放查询结果
SqlDataAdapter sda = null; //ADONET查询的另一个对象,不知道你用过没有,查询的时候再初始化
3,搞一个查询按键也来超名:如btnSearch,写这个查询按钮的点击事件,具体处理如下:
string sql = "select from [yourtable] where [your condition]";
//初始化上边声明的SqlDataAdapter对象
thissda = new SqlAdapter(sql, con); //con是你的数据库连接,到时候换成你的连接对象就行了
thissdaFill(set,"Question"); //用sda去查询数据库,并把结果保存在上边声明的数据集里
dgvQuestionListDataSource = setTables["Question"]; //将查询结果显示到DataGridView上
以上是查询部分,下面说编辑
4,编辑的话,直接在DataGirdView控件上编辑就行了,关键是编辑完成后保存,你需要再来个按钮比如叫btnUpdate
处理这个更新按钮的点击事件,处理过程如下
SqlCommandBuilder builder = new SqlCommandBuilder(thissda); //把查询时用的SqlDataAdapter对象传过来,SqlCommandBuilder对象将自动为DataAdapter对象生成增删改语句
thissdaUpdate(set, "Question"); //记DataAdapter对象去执行更新
到此,解决,就是注意,数据库表里一定要有主键,否则不行了
不知道对你是否有帮助,有不明白的可以接着讨论。
Remove(listView1SelectedItems[0]);和Remove(listView1SelectedItems); 上面这个是有区别的,一个Remove的是单个,而后面的是移除多个(不过是当允许多选的时候)。 你没有执行,是不是你sno='后面的那个根本没有选项。你可以调试一下,看看那个值。或者就直接改成。 不过都不是好办法。 你可以使用。初始化的时候,网listView里面添加数据的时候,同时把数据库里面的ID值,添加到ListItem ////例如》--/先要判断是否有选中。哈,直接listViewSelectedItemsCount!=0就判断了。/ ListViewItem list = new ListViewItem("HEllo"); listTag = 1; //假如这个是数据库里面取出来的标示符。 // 添加数据显示时候↑,删除数据选择的时候↓ int i=0,p; for (; i < listView1ItemsCount; i++) if (listView1Items[i]Selected) break; p = ConvertToInt32(listView1Items[i]Tag); 这样再执行: string strSQL = "delete from stu where sno=‘"+pToString()+"'"; 一般这样来 *** 作,因为当删除添加后,数据库里面的标示就会发生更改,通过这样就不会删除的时候,选择错误数据了。
0、本质上是listview绑定Adapter,Adapter关联List,因此List变化后导致Adapter同步变化;再通过调用adapternotifyDataSetChanged();方法使得listview界面自动更新。
*** 作:
1、List<String> strName = new ArrayList<String>();//实际的数据源
2、Adapter adapter = new ArrayAdapter<String>(context,
Rlayoutxmlforitem, strName);//适配器,其中 Rlayoutxmlforitem是列表中每一项的布局,可以用默认的也可自建,strName则是将数据源绑定到适配器
3、listViewsetAdapter(adapter);//将适配器绑定到列表显示控件ListView;
4、strNameadd("TEST ONE");//增加一项,引起list变化,Adapter也随之变化;
5、adapternotifyDataSetChanged();//调用notifyDataSetChanged();更新适配器,ListView会自动刷新,notifyDataSetChanged()方法可能需要在UI线程中调用,建议自行测试;
6、数据增加可能引起内存变化,需防内存溢出;
7、其他。
以上仅供参考,建议多搜索相关文档。
以上就是关于使用listview显示数据库表信息,但是当表数据变化时listview并不能随之变化,怎样可以实时显示全部的内容,包括:使用listview显示数据库表信息,但是当表数据变化时listview并不能随之变化,怎样可以实时显示、listview怎么绑定dataset的怎么实现在listview里改值同步到数据库、c# 如何双击listview 的项可变成编辑状态等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)