看到一个问题:定时更新gridview的某一列中的状态文本。马上就有了思路:gridview最后会生成表格,所以我们在页面中通过ajax更新表格的列,从而达到ajax更新gridview的效果。
具体实现:
准备一个xml文件,用于存储要更新的数据,在页面中启动一个定时器,每隔5秒钟调用一个函数,函数里边通过$.ajax获取xml中的数据,解析xml,遍历表格行,匹配要更新的数据,更新。
getuserlist.xml
定义一个userlist的根节点,下边每个useritem对应一条数据,uid可以理解成主键,ustatus是最新的状态。
1关闭2关闭3开放
test.html
具体的逻辑都写到这里边了。
ajax update table column idnamestatus
1 张三 开放
2 李四 开放
3 王五 开放
最后将所需文件放到一个可以浏览的站点下边,打开test.html。
等待5秒钟,就可以看到效果了。
因为ie的问题,直接在文件夹下打开会出现不能解析xml文件(parsererror)的问题,所以建议放到可以运行的站点下边,或者用别的浏览器打开。
ps:gridview 是 datagrid的后继控件,在 framework 2 中,虽然还存在datagrid,但是gridview已经走上了历史的前台,取代datagrid的趋势已是势不可挡。gridview和datagrid功能相似,都是在web页面中显示数据源中的数据,将数据源中的一行数据,也就是一条记录,显示为在web页面上输出表格中的一行。
gridview相对于datagrid来说,具有如下优势,功能上更加丰富,因为提供了智能标记面板(也就是show smart tag)更加易用方便,常用的排序、分页、更新、删除等操作可以零代码实现!具有pagertemplate属性,可以自定义用户导航页面,也就是说分页的控制更加随心所欲。gridview和datagrid在事件模型上也多有不同之处,datagrid控件引发的都是单个事件,而gridview控件会引发两个事件,一个在操作前发生,一个在操作后发生,操作前的事件多位***ing事件,操作后的事件多位***ed事件,比如sorting 事件和sorted 事件,rowdeleting和rowdeleted事件。
listview和gridview的刷新界面的方式是调用adapter.notifydatasetchanged()进行界面刷新。
但是此方法有其弊端,他是将界面中的数据全部刷新一遍,不论数据有没有变化。