【发布时间】:2014-08-22 23:31:02
【问题描述】:
我的 asp.net 网页上有一个 RadMultipage 控件。
我正在将用户控件作为页面加载到此控件中。
下面是加载用户控件的代码。
protected void RadMultiPage1_PageViewCreated(object sender, Telerik.Web.UI.RadMultiPageEventArgs e)
{
try
{
string controlName;
int index = e.PageView.ID.Trim().IndexOf(" ");
if (index > 0)
{ controlName = e.PageView.ID.Trim().Remove(index); }
else
{ controlName = e.PageView.ID; }
Control pageViewContents = LoadControl(controlName + ".ascx");
pageViewContents.ID = e.PageView.ID + "userControl";
e.PageView.Controls.Add(pageViewContents);
}
catch (Exception ex)
{
Utility.WalkException(this, ex, "There was an error while performing this operation.");
}
}
我还启用了视图状态和 autoeventwireup。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" EnableViewState="true" ViewStateMode="Enabled" Inherits="VentureAssessmentApp.Default" %>
现在我遇到的问题是用户控件上的按钮。该按钮的单击事件没有被触发。它只是重新加载页面。甚至 IsPostBack 也返回 false。
任何人都可以提出一些解决方案吗?碰巧点击事件有时会起作用,而大多数时候它不起作用。
【问题讨论】:
-
如果您动态创建控件,您通常应该在每次回发后重新创建它们。也许您将代码放入的事件可能仅在控制首次加载或创建第一页时触发。如果用户控件中的
Button也是动态添加的,或者在 *.ascx 文件中的标记中声明,也请写明。 -
@LukaszM 该按钮在 *.ascx 文件的 makup 中声明。但它有时会触发点击事件,有时不会。
-
请确认每次回发时是否触发
RadMultiPage1_PageViewCreated方法。如果没有,您应该将创建控件的代码放在Page_Init或Page_Load页面事件处理程序中。在RadMultiPage1_PageViewCreated方法中只需设置一个标志来指示是否应创建控件。 -
@LukaszM RadMultiPage1_PageViewCreated 每次在页面加载和按钮点击等回发时都会被触发。但是按钮单击时 IsPostBack 仍然是错误的。
-
可能是控件添加得太晚而无法正常工作,请尝试将向页面添加控件的代码移动到
Page_Init或Page_Load页面事件处理程序,如建议的狮子座.
标签: c# asp.net button postback