使用UserControl时ASP.NET AJAX问题

时间:2009-02-24 09:59:59

标签: asp.net ajax user-controls

我有一个名为TenantList.ascx的UserControl,它包含一个来自DevExpress(Web.ASPxGridView)的稍微修改过的GridView。这个控件使回调不会导致回发,这正是我需要的。 我需要做出的具体事件是CustomButtonClicked。我在用户控件TenantList.ascx上创建了OnCustomButtonClicked事件,该事件在GridView CustomButtonClicked事件触发时触发。

我在使用UC的页面上有一个事件处理程序。当我使用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();
    }

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

这没有问题......我百分百陷入困境,不知道这里可能出现什么问题。

欢迎任何建议!!

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

2 个答案:

答案 0 :(得分:1)

好的解决了这个问题

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

这一切都成功了。但是解决方案并没有给人留下深刻看起来有点难看。

答案 1 :(得分:0)

确保您的更新面板设置为始终更新(非有条件)。您还可以在本文中找到有用的信息:

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设置为Conditional update。如果设置为始终更新,则应该抛出错误。

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