读书人

关于页面回发的有关问题

发布时间: 2012-08-26 16:48:06 作者: rapoo

关于页面回发的问题
.aspx

<asp:Panel ID="panelRoleList" runat="server"></asp:Panel>
<asp:Button ID="btnPowerSave" runat="server" Text="保存" onclick="btnPowerSave_Click" />

.cs
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
foreach (DataRow dr in dt_Category.Rows)
{
Panel pal1 = new Panel();
pal1.GroupingText = "test1";

Panel pal2 = new Panel();
pal2.GroupingText = "test2";

panelRoleList.Controls.Add(pal1);
panelRoleList.Controls.Add(pal2);

}
}
}
protected void btnPowerSave_Click(object sender, EventArgs e)
{
for (int i = 0; i < panelRoleList.Controls.Count; i++)
{
Panel pl = (Panel)panelRoleList.Controls[i];
}
}

问题:
Panel pl = (Panel)panelRoleList.Controls[i];
此处出现异常:无法将类型为“System.Web.UI.LiteralControl”的对象强制转换为类型“System.Web.UI.WebControls.Panel”。

调试发现:page_loads时 Panel.Controls Count 为2
Click时Panel.Controls Count 为1

个人认为可能是页面回发导致的,但具体是怎么导致的,我也不知道
还请各位了解的朋友不吝赐教,非常感谢。。
(本人菜鸟,勿喷。。)


[解决办法]
楼主 你动态添加的控件 在回发的时候 是不能被解析出来的
[解决办法]
Panel pl = (Panel)panelRoleList.Controls[i];
不能强制进行转换 要判断控件是否为空

读书人网 >asp.net

热点推荐