首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >未使用更新面板更新动态绑定Gridview

未使用更新面板更新动态绑定Gridview
EN

Stack Overflow用户
提问于 2013-06-19 17:49:39
回答 2查看 1.4K关注 0票数 1

我使用GridView在asp.net应用程序中显示数据,数据在CS端代码中动态绑定。

代码语言:javascript
代码运行次数:0
运行
复制
 <asp:UpdatePanel ID="UpdatePanel2" UpdateMode="Conditional"  runat="server">
        <ContentTemplate>
                <asp:GridView ID="grdView" runat="server" AutoGenerateColumns="false">
                    <Columns>
                    </Columns>  
                </asp:GridView>  
                </ContentTemplate>
                <Triggers><asp:AsyncPostBackTrigger ControlID="ImageButton1" EventName="Click"/></Triggers>
    </asp:UpdatePanel>

没有问题,但是当我使用更新面板更新我的GridView时,它会将新数据附加到GridView中的旧数据显示中。https://www.diigo.com/item/image/41snq/s18c

我的cs端代码是:

代码语言:javascript
代码运行次数:0
运行
复制
DataTable dt = _oBase.FillDataTable("Exec sp_Detail");
DataTable dtC = dt.DefaultView.ToTable(true, new[] { "TimeName" }); // Filter Row Name

DataTable dtH;
    if (dt.Rows.Count > 0)
    {
        dtH = (from row in dt.AsEnumerable()
               let tags = row.Field<string>("ColumnName")
               orderby tags ascending
               select row).CopyToDataTable();
        dtH = dtH.DefaultView.ToTable(true, new[] { "ColumnName" }); // Filter Column Name
    }
    else
    {
        dtH = dt.DefaultView.ToTable(true, new[] { "ColumnName" });
    }

    var tFf = new TemplateField { HeaderTemplate = new MyGridViewTemplate(ListItemType.Header, "_", dtC, dt) };
    //tFF.HeaderText = "";
    tFf.HeaderStyle.CssClass = "mGrid";
    tFf.ItemTemplate = new MyGridViewTemplate(ListItemType.Item, "", dtC, dt);
    tFf.ItemStyle.Width = 50;
    grdView.Columns.Add(tFf);

    for (int i = 0; i < dtH.Rows.Count; i++)
    {
        var tF = new TemplateField { HeaderText = dtH.Rows[i][0].ToString() };
        tF.HeaderStyle.CssClass = "mGrid";
        tF.ItemTemplate = new MyGridViewTemplate(ListItemType.Item, dtH.Rows[i][0].ToString(), dtC, dt);
        tF.ItemStyle.Width = 130;
        grdView.Columns.Add(tF);
    }

    grdView.DataSource = dtC;
    grdView.DataBind();
EN

回答 2

Stack Overflow用户

发布于 2013-06-19 18:24:22

我觉得我已经有过几次你描述的问题了。在我的例子中,这总是因为Page_Load中的绑定在每次加载时运行,你从hmm运行的任何方法,比如说一个按钮单击,都在Page_Load之前运行,所以你需要在if测试中包装初始绑定

代码语言:javascript
代码运行次数:0
运行
复制
protected void Page_Load(object sender, EventArgs e)
{
//Dont bind outside as it will overwrite the BindCode() 
    if (!IsPostBack)
    {
        //Bind inhere then it wil only bind on a full refresh and not on AJAX (partial postbacks)
    }
}

public void BindCode(){
}
票数 0
EN

Stack Overflow用户

发布于 2013-06-19 21:47:24

既然您在更新面板中使用了UpdateMode="Conditional",那么您的代码中是否使用了UpdatePanel2.Update();这一行呢?

如果不是这样,您可能需要考虑在代码中使用UpdateMode="Always"或包含.Update()调用。使用条件更新时,您必须在后台代码中手动触发Update()方法。

希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17188133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档