代码之家  ›  专栏  ›  技术社区  ›  The real napster

使用用户控件时ASP.NET AJAX问题

  •  0
  • The real napster  · 技术社区  · 17 年前

    我有一个名为TenantList.ascx的用户控件,其中包含一个来自DevExpress(Web.ASPxGridView)的稍微修改过的GridView。此控件进行回调而不会导致回发,这正是我所需要的。 我需要对其作出反应的特定事件是CustomButtonClicked。我在usercontrol TenantList.ascx上创建了OnCustomButtonClicked事件,该事件在GridView CustomButtonClicked事件激发时激发。

    我在使用UC的页面上有一个eventhandler。当我使用VS进行调试时,我可以看到我进入了eventhandler,正如我所设想的那样。 我的Eventhandler如下所示:

        protected void uc_TenantList_CustomButtonCallback(object sender, ASPxGridViewCustomButtonCallbackEventArgs e)
        {
            Tenant tenant = (Tenant)uc_TenantList.GetGridView().GetRow(e.VisibleIndex);
    
            switch (e.ButtonID)
            {
                case "btn_show":
                    ShowRow(tenant);
                    break;
                case "btn_edit":
                    EditRow(tenant);
                    break;
                case "btn_delete":
                    DeleteRow(tenant.Id);
                    break;
                default:
                    break;
            } 
        }
    
        private void EditRow(Tenant tenant)
        {
            uc_TenantDetails.SetTenantData(cBLL.GetTenant(tenant.Id));
            UpdatePanel1.Update();
        }
    

    但是如果我调用UpdatePanel1.Update();从注册到ScriptManager的普通控件中,它可以正常更新。

            protected void Button1_Click(object sender, EventArgs e)
            {
                uc_TenantDetails.SetTenantData(cBLL.GetTenant(17));
                UpdatePanel1.Update();
            }
    

    那没问题。。。我100%陷入困境,不知道这里可能有什么问题。

    干杯 真正的纳普斯特-陷入真正的麻烦:)

    2 回复  |  直到 17 年前
        1
  •  1
  •   The real napster    17 年前

    好的,解决了这个问题

    我需要做的是在usercontrol中的gridview控件上启用回发。 然后将Gridview用户控件放在一个updatepanel中,并将details用户控件保留在另一个updatepanel中。

    这样一切都解决了。不过,这个解决方案并没有给人留下深刻印象。看起来有点难看。

        2
  •  0
  •   Chris    17 年前

    确保“更新”面板设置为“始终更新”(无条件更新)。您还可以发现本文中的信息非常有用:

    http://www.asp.net/AJAX/Documentation/Live/overview/PartialPageRenderingOverview.aspx http://msdn.microsoft.com/en-us/library/system.web.ui.updatepanel.update.aspx

    第一个链接将提供有关部分页面呈现的一些历史记录,第二个链接提供有关更新方法的更多信息。

    从文档中调用UpdatePanel.Update将导致在调用后在客户端上重新呈现更新面板,但前提是UpdatePanel设置为有条件更新。如果设置为“始终更新”,则会引发错误。

    如果您的“更新”面板设置为“始终更新”,可能是因为它嵌套在另一个更新模式设置为“条件”的UpdatePanel中?

    推荐文章