FineUI 官方论坛

标题: 【已解决】Grid数据库分页模拟树+检索的重绑定问题 [打印本页]

作者: appletreegd    时间: 2013-2-28 09:16
标题: 【已解决】Grid数据库分页模拟树+检索的重绑定问题
前台代码:
   
  1. <ext:PageManager runat="server" ID="pageManager1" AutoSizePanelID="Panel1" />
  2.     <ext:Panel ID="Panel1" runat="server" BodyPadding="5px" BoxConfigAlign="Stretch"
  3.         Title="" Layout="VBox" EnableBackgroundColor="true" ShowBorder="false" EnableLargeHeader="true">
  4.         <Items>
  5.             <ext:SimpleForm runat="server" BodyPadding="5px" ShowHeader="false" ShowBorder="false"
  6.                 EnableBackgroundColor="true">
  7.                 <Items>
  8.                     <ext:TriggerBox ID="ttbSearch" runat="server" Label="" ShowLabel="false" TriggerIcon="Search"
  9.                         EmptyText="输入要搜索的关键字">
  10.                     </ext:TriggerBox>
  11.                 </Items>
  12.             </ext:SimpleForm>
  13.             <ext:Panel runat="server" ID="Panel2" ShowHeader="false" BoxFlex="1" Layout="Fit">
  14.                 <Items>
  15.                   <ext:Grid runat="server" ID="gTerm" EnableCheckBoxSelect="True" DataKeyNames="TermId"
  16.                         PageSize="5" ShowHeader="false" ShowBorder="false"
  17.                         EnableRowNumber="True" AllowPaging="true" IsDatabasePaging="true">
  18.                         <Columns>                  
  19.                             <ext:BoundField HeaderText="字典名称" DataField="TermName" Width="250px" DataSimulateTreeLevelField="Level" />
  20.                             <ext:CheckBoxField Width="40px" RenderAsStaticField="true" DataField="IsSystem" HeaderText="系统" />
  21.                             <ext:BoundField HeaderText="字典编码" DataField="TermCode" Width="100px" />
  22.                         </Columns>
  23.                     </ext:Grid>
  24.                 </Items>
  25.             </ext:Panel>
  26.         </Items>
  27.     </ext:Panel>
复制代码

后台代码:
  1. /// <summary>
  2.         /// 分页
  3.         /// </summary>
  4.         private Pagination Pagination
  5.         {
  6.             get
  7.             {
  8.                 if (ViewState["Pagination"] == null)
  9.                 {
  10.                     var p = new Pagination() { PageSize = this.gTerm.PageSize };
  11.                     ViewState["Pagination"] = p;
  12.                 }
  13.                 return ViewState["Pagination"] as Pagination;
  14.             }
  15.         }

  16.         private TermQuery TermQuery
  17.         {
  18.             get
  19.             {
  20.                 if (ViewState["TermQuery"] == null)
  21.                     ViewState["TermQuery"] = new TermQuery();
  22.                 return ViewState["TermQuery"] as TermQuery;
  23.             }
  24.             set { ViewState["TermQuery"] = value; }
  25.         }
  26. protected void ttbSearch_TriggerClick(object sender, EventArgs e)
  27.         {
  28.             this.TermQuery.TermName = ttbSearch.Text.Trim();
  29.             this.gTerm_PageIndexChange(this.gTerm, new GridPageEventArgs(0));
  30.         }
  31. protected void gTerm_PageIndexChange(object sender, FineUI.GridPageEventArgs e)
  32.         {
  33.             this.gTerm.PageIndex = e.NewPageIndex;
  34.             this.Pagination.CurrentPageIndex = e.NewPageIndex;
  35.             this.BindTermList();
  36.         }
  37. private void BindTermList()
  38.         {
  39.             //这里是数据库分页检索获取数据,打过断点,这里检索出来的数据一直都没问题
  40.             var termList = GetTermListByDepth(this.TermQuery, this.Pagination);
  41.             gTerm.RecordCount = this.Pagination.RowCount.Value;
  42.             gTerm.DataSource = termList;//绑定数据
  43.             gTerm.DataBind();
  44.         }
复制代码


问题描述:进入页面的时候,绑定数据分页是正确的,如图1,树状分页了:

第一次检索,结果是正确的,如图2:

但是第二次检索,结果就不正确了,如图3:

第三次检索,结果不正确,如图4:

第二次检索的正确结果应该是图5:

第三次检索的正确结果应该如图6:

检索的时候,绑定的数据条数跟显示的数据条数都不一样的。还有一种情况是,假如前面第一次检索“课”的第一页数据总条数(不是根节点数)是17,第二次输入“学”字检索,界面没有任何变化!后台跟踪了返回的数据是正确的8条,但是绑定了以后,界面没有变化,还是以前的搜索结果。(只要后一次数据比前一次数据少,界面就没有反应

麻烦大家有空看看!请问这是一个BUG吗?还是我哪里写错了?



作者: 大海中一滴水    时间: 2013-3-2 07:07
我也遇见同样的问题
作者: appletreegd    时间: 2013-3-4 06:02
大海中一滴水 发表于 2013-3-2 07:07
我也遇见同样的问题

好囧啊。。请问你解决了吗?我愣是没搞清楚为什么数据绑上去之后渲染出来会是那个样子。。难道要去看Grid内部的代码?....
作者: 大海中一滴水    时间: 2013-3-5 11:45
你是用的数据库分页吧,应该是数据库分页的问题, 把IsDatabasePaging="True"改为false,这样可以实现查询,但是不用数据库分页又带来性能问题,我现在也没有用数据库分页的解决方案!
作者: 大海中一滴水    时间: 2013-3-5 11:46
appletreegd 发表于 2013-3-4 06:02
好囧啊。。请问你解决了吗?我愣是没搞清楚为什么数据绑上去之后渲染出来会是那个样子。。难道要去看Grid ...

如果你在数据库分页下解决这个问题告诉我一下
作者: aa7769640    时间: 2013-3-7 02:29
这个帖子不错,大家快来顶起来!
作者: sanshi    时间: 2013-3-17 09:54
请提供别人可以直接运行的例子,否则无法调试解决
作者: appletreegd    时间: 2013-3-19 15:24
sanshi 发表于 2013-3-17 09:54
请提供别人可以直接运行的例子,否则无法调试解决

三石老大,我在BUG区同名帖子提交了可以运行的例子
作者: appletreegd    时间: 2013-3-20 09:23
感谢三石老大!还有一个问题求解答,有空请看看~~谢谢~~
关于checkboxlist的hidden=true导致的验证问题
http://fineui.com/bbs/forum.php? ... 32&fromuid=3392

作者: sanshi    时间: 2013-3-20 11:35
已经解决,同:http://fineui.com/bbs/forum.php? ... amp;extra=#pid10888




欢迎光临 FineUI 官方论坛 (https://fineui.com/BBS/) Powered by Discuz! X3.4