页面中有个DataGrid1,开始时绑定到表TB1,在编辑,删除,更新,换页等按扭的事件中都调用个重新绑定DataGrid1到DB1的方法BindGrid();不这样的话好象页面内容就刷新不了。
可是我遇到这样个问题:查询操作的时候,DataGrid1绑定到TB1中查询出来的部分内容,这时如果也有N多页,当再点换页操作时,或者是编辑操作时,会激发BindGrid();而这个方法又把DataGrid1绑定到表TB1,于是....刚才查询出来的内容飞了。
如果不调用BindGrid();,页面内容却刷新不了,好矛盾啊...
我是初学者,这个问题还真是难懂,有什么方法完成上面的操作吗?

解决方案 »

  1.   

    DataGrid1_PageIndexChanged事件中应该是这种形式
    DataGrid1.CurrentPageIndex = e.NewPageIndex
    BindGrid()你说开始时绑定是什么意思?是一进页面数据就已经绑定上了吗?那一定要把BindGrid放到not postback里,如:
    Page_load:
    (VB语法)
    If Not Page.IsPostBack Then
    BindGrid()
    End if
    如果不放到not postback里。点击按钮或任何触发PostBack的事件。都会执行Page_load里的内容。
      

  2.   

    If Not Page.IsPostBack Then
    BindGrid()
    End if
    应该是这个缘故
      

  3.   

    可以在BindGrid()方法中加一个参数BindGrid(string connstring),connstring为查询的条件
    这样当查询的时候绑定的数据源就成了你需要的了
    因为你在BindGrid()固定了数据源,所以会出现你现在的问题了
      

  4.   

    如果不想每次都查询数据库,那你就把查询结果存在一个缓存中,比如你把DATATABLE或者DATASET等等  存到SESSION或者缓存真实APP[]里都可以,看你需要了.当然这里是在不改变查询条件的时候,如翻页排序之类的.如果有删除添加或者更改查询条件,是必然要重新查询了.
    绑定的时候不仅仅是把数据传给DRIGVIEW其实还有GRIDVIEW的一些内部操作,所以BIND是每步必须的.
      

  5.   

    你帮定的时候给其传入sql语句,sql语句包括查询条件.
      

  6.   

    BindGrid() 中必须包括查询条件,看来你没有包含。绑定时不能忽视完整的状态,查询条件、页号、焦点所在的行等等都要设置。
      

  7.   

    交互的核心就是你在动手写程序之前脑子里就应该有完整的、具体的一个个状态的图像。我给你举个状态例子,这在很多“事例”程序中都是错误的,只是司空见惯:在postback的时候,DataGrid会对被选中的行或者被编辑的行有特殊的现实,假设当前被选中的行显示在第2页、第15行。当postback的时候,如果数据库已经被其它用户插入一行,那么刷新之后被选中行应该显示在第2页第16行或者跑到第3页第1行(显示第2页的时候就不再有选中行了),也就是不要过分使用SelectedIndex做它不足以做的事,而其它部分应根据记录的业务含义去显示才是正确的交互设计。对状态错误使用,甚至忽视,写出的程序逻辑上就丢三落四,等出了问题再找不着原因,就感到矛盾了