【问题标题】:ASP.NET AJAX issues when using UserControls使用 UserControls 时的 ASP.NET AJAX 问题
【发布时间】:2009-02-24 09:59:59
【问题描述】:

我有一个名为 TenantList.ascx 的用户控件,其中包含来自 DevExpress (Web.ASPxGridView) 的稍微修改的 GridView。这个控件在不引起回发的情况下进行回调,这正是我所需要的。 我需要响应的特定事件是 CustomButtonClicked。我在用户控件 TenantList.ascx 上创建了 onCustomButtonClicked 事件,该事件在 GridView CustomButtonClicked 事件触发时触发。

我在使用 UC 的页面上有一个事件处理程序。当我使用 VS 进行调试时,我可以看到我进入了我想的事件处理程序。 我的事件处理程序如下所示:

    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();
    }

EditRow 函数被调用,并且 UserControl TenantDetails.ascx 被正确填充数据。然而 UpdatePanel1.Update();没有更新我的 TenantDetails UserControl 所在的面板。

但是,如果我调用 UpdatePanel1.Update();从注册到 ScriptManager 的普通控件,它更新得很好。

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

这没有问题...我 100% 被卡住了,不知道这里可能存在什么问题。

欢迎提出建议!!

干杯 真正的 Napster - 真正的麻烦:)

【问题讨论】:

  • 您的更新面板是在带有控件的页面上还是实际上在使用脚本管理器代理等的控件上...
  • 它与用户控件在同一页面上。但是 ScriptManager 位于此页面上使用的 Masterpage 上。

标签: asp.net ajax user-controls


【解决方案1】:

好的解决了这个问题

我需要做的是在我的用户控件内的 gridview 控件上启用回发。 然后将 Gridview 用户控件放在一个更新面板中,并且仍然将详细信息用户控件保留在另一个更新面板中。

就这样,一切顺利。解决方案虽然没有留下深刻的印象。有点难看。

【讨论】:

    【解决方案2】:

    确保您的更新面板设置为始终更新(不是有条件的)。您可能还会发现本文中的信息很有用:

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

    第一个链接将为您提供有关部分页面渲染的一些历史记录,第二个链接为您提供有关 Update 方法的更多信息。

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

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

    【讨论】:

    • 我已经将它设置为 Always 而不是有条件的,它没有任何区别。我使用更新();函数而不是“始终”。 “我会说这听起来像是启用了部分页面渲染。”我只想渲染 Updatepanel 不应该打开吗?
    • 对不起,将充实答案-我发布的链接说您还需要对脚本管理器进行修改
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    相关资源
    最近更新 更多