FineUI 官方论坛
标题:
请教how to 使用后台代码刷新Grid数据
[打印本页]
作者:
o0micky
时间:
2014-3-18 15:12
标题:
请教how to 使用后台代码刷新Grid数据
数据库中数据变更后,发现如果点击Button并在后台事件里使用重绑Grid方法,但页面显示数据没有更改,虽然Debug看数据项是没问题的。只有重新刷新页面才显示正确。。求帮助。。看extjs写的神马grid.store.reload()..我在后台事件里完全不晓得肿么改!贴上源码
aspx:
<x:Button ID="Btn_Search" Text="搜索" runat="server" OnClick="Btn_Search_Click" />
复制代码
.cs:
protected void Btn_Search_Click(object sender, EventArgs e)
{
BindGrid_PageIndex();
}
复制代码
作者:
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...=新数据就可以了呀。。。
我就是重绑了下啊。。。
#region BindGrid
private void BindGrid_PageIndex()
{
Grid1.PageIndex = 0;
BindGrid();
}
private void BindGrid()
{
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());
string sort_order = "ACAD_GROUP,AcadCar_Sort,STAF_GRADE,ACAD_PLAN,STAF_CLASS,CAMPUS_ID";
//分页
Grid1.RecordCount = dt.Rows.Count;
DataTable dt_page = Fun.GetPagedDataTable(Grid1, dt, sort_order);
DataView dv = dt_page.DefaultView;
Grid1.DataSource = dv;
Grid1.DataBind();
//Fun.BindGrid(dt, sort_order, Grid1);
}
#endregion
复制代码
这里的dt重生成了,不过dt相应入参和重绑之前是一样的。我觉得会有影响,如果我改个Drp_Group选定值神马的dt的入参会有变化。
我觉得是不是渲染神马的原因。。看extjs上说要grid.getstore().reload(); 我后台完全晕的。。
是不是要刷新个Grid控件神马的。。我试下这个
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)前台
<form id="form1" runat="server">
<x:PageManager ID="PageManager1" runat="server" AutoSizePanelID="Panel1" />
<x:Button ID="Button1" Text="搜索" runat="server" OnClick="Btn_Search2_Click" />
<x:Grid ID="Grid1" Title="测试" ShowBorder="false" ShowHeader="true" runat="server">
<Columns>
<x:TemplateField Width="120px" HeaderText="时间-模板列">
<ItemTemplate>
<%# Eval("ctime") %>
</ItemTemplate>
</x:TemplateField>
<%--<x:BoundField Width="150px" HeaderText="时间-绑定列" DataField="ctime" />--%>
</Columns>
</x:Grid>
</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