关于页面回发的问题
.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];
不能强制进行转换 要判断控件是否为空