我有一个名为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 - 真正的麻烦:)
答案 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中?