FineUI 官方论坛

标题: 请教how to 使用后台代码刷新Grid数据 [打印本页]

作者: o0micky    时间: 2014-3-18 15:12
标题: 请教how to 使用后台代码刷新Grid数据
数据库中数据变更后,发现如果点击Button并在后台事件里使用重绑Grid方法,但页面显示数据没有更改,虽然Debug看数据项是没问题的。只有重新刷新页面才显示正确。。求帮助。。看extjs写的神马grid.store.reload()..我在后台事件里完全不晓得肿么改!贴上源码
aspx:
   
  1. <x:Button ID="Btn_Search" Text="搜索" runat="server" OnClick="Btn_Search_Click" />
复制代码


.cs:
  1. protected void Btn_Search_Click(object sender, EventArgs e)
  2.         {
  3.             BindGrid_PageIndex();

  4.         }
复制代码







作者: o0micky    时间: 2014-3-18 15:15
PS:Source版本是3.2.6
作者: o0micky    时间: 2014-3-18 16:16
我去。。我发现上传后如果是Insert的话 Grid会显示出新数据。。如果是Update的话就不变更硬要重刷一下页面。。这是渲染的问题还是肿么。。求高手
作者: bluer    时间: 2014-3-19 08:29
g1.datasou...=新数据就可以了呀。。。
作者: o0micky    时间: 2014-3-19 08:57
bluer 发表于 2014-3-19 08:29
g1.datasou...=新数据就可以了呀。。。

我就是重绑了下啊。。。
  1. #region BindGrid
  2.         private void BindGrid_PageIndex()
  3.         {
  4.             Grid1.PageIndex = 0;
  5.             BindGrid();
  6.         }

  7.         private void BindGrid()
  8.         {
  9.             DataTable dt = Fun.GetDt_LoanBankLend(Hid_OpRole.Text, Drp_Strm.SelectedValue, Drp_Group, Rbl_Career, Drp_Grade, Drp_Plan, Drp_Class, Tbx_CampusidName_Descr.Text.Trim());

  10.             string sort_order = "ACAD_GROUP,AcadCar_Sort,STAF_GRADE,ACAD_PLAN,STAF_CLASS,CAMPUS_ID";
  11.             //分页
  12.             Grid1.RecordCount = dt.Rows.Count;
  13.             DataTable dt_page = Fun.GetPagedDataTable(Grid1, dt, sort_order);
  14.             DataView dv = dt_page.DefaultView;
  15.             Grid1.DataSource = dv;
  16.             Grid1.DataBind();
  17.             //Fun.BindGrid(dt, sort_order, Grid1);
  18.         }
  19.         #endregion
复制代码

这里的dt重生成了,不过dt相应入参和重绑之前是一样的。我觉得会有影响,如果我改个Drp_Group选定值神马的dt的入参会有变化。
我觉得是不是渲染神马的原因。。看extjs上说要grid.getstore().reload(); 我后台完全晕的。。
是不是要刷新个Grid控件神马的。。我试下这个
  1. PageContext.RegisterStartupScript(Grid1.GetRefreshIFrameReference());
复制代码
也不行
作者: o0micky    时间: 2014-3-19 09:32
bluer 发表于 2014-3-19 08:29
g1.datasou...=新数据就可以了呀。。。

恩我观察了下因为我的Grid的好多显示用的是模板列
好吧我用奇怪的方法暂时解决先。。。有空再来研究了。。
我在Dt的sql里加一个字段存的时间,完了在Grid的里加一个BoundField指定DataField为时间再Hidden之。。
还是希望有人能告之如何解决这个问题啊真心的。。
附上代码
(1)前台
  1. <form id="form1" runat="server">
  2.     <x:PageManager ID="PageManager1" runat="server" AutoSizePanelID="Panel1" />
  3.     <x:Button ID="Button1" Text="搜索" runat="server" OnClick="Btn_Search2_Click" />
  4.     <x:Grid ID="Grid1" Title="测试" ShowBorder="false" ShowHeader="true" runat="server">
  5.         <Columns>
  6.             <x:TemplateField Width="120px" HeaderText="时间-模板列">
  7.                 <ItemTemplate>
  8.                     <%# Eval("ctime") %>
  9.                 </ItemTemplate>
  10.             </x:TemplateField>
  11.             <%--<x:BoundField Width="150px" HeaderText="时间-绑定列" DataField="ctime" />--%>
  12.         </Columns>
  13.     </x:Grid>
  14.     </form>
复制代码

  (2)后台:
protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Bind_Grid();
            }
        }
        protected void Bind_Grid()
        {

            SqlHelper sqh = new SqlHelper();
            string sqltext = "select sysdate ctime from dual";
            DataTable dt = sqh.GetDataTable(sqltext);
            Grid1.DataSource = dt;
            Grid1.DataBind();
            

        }
        protected void Btn_Search2_Click(object sender, EventArgs e)
        {
            Bind_Grid();
        }
作者: o0micky    时间: 2014-3-19 10:25
如果满足
(1)不使用扩展列就是有+号那个,或者扩展列要默认展开
(2)Grid重绑后调用Grid.UpdateTemplateFields()
就能解决之前的数据库数据变更后,再搜索Grid不显示数据变化的异常。。
可是我总不能扩展列都展开嘛太丑了。。还好是之前看一个贴子有人反应也是扩展列不展开时,一些PostBack神马的不生效。。也不晓得能不能解决这个问题。。那个贴子找不到了。。




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