FineUI 官方论坛
标题:
一个错误,比较怪异,求救
[打印本页]
作者:
F壹
时间:
2013-6-19 11:41
标题:
一个错误,比较怪异,求救
这个错误在调试过程中没有任何提示的,一直到PageLoad的最后一句都没有错误。
后台代码
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using ExtAspNet;
public partial class sysman_images_AuthorityManager : System.Web.UI.Page
{
public string role;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
role = Request.QueryString["roleid"].ToString().Trim();
CreateAccordion();
btnClose.OnClientClick = ActiveWindow.GetConfirmHidePostBackReference();
}
}
protected void CreateAccordion()
{
DataTable table = GetTable();
DataRow[] rows = table.Select("PARENT_ID is null");
foreach (DataRow row in rows)
{
//if (row.IsNull("PARENT_ID"))
//{
AccordionPane accordionPane = new AccordionPane();
accordionPane.Title = row["menuname"].ToString();
accordionPane.Layout = Layout.Fit;
accordionPane.ShowBorder = false;
accordionPane.BodyPadding = "2px 0 0 0";
this.Accordion1.Items.Add(accordionPane);
ResolveSubRow(table,row,accordionPane);
//}
}
}
protected void ResolveSubRow(DataTable table,DataRow row,AccordionPane pan)
{
string strAuth = GetAuth();
string parentID = row["menu_id"].ToString();
DataRow[] rows = table.Select("parent_id='" + parentID + "'");
CheckBoxList chl = new CheckBoxList();
chl.Label = row["menuname"].ToString();
chl.ColumnNumber = 3;
pan.Items.Add(chl);
foreach (DataRow subRow in rows)
{
if (!subRow.IsNull("linkpage"))
{
string text = subRow["menuname"].ToString();
string value = subRow["menu_id"].ToString();
chl.Items.Add(text,value);
}
else
{
string parentID1 = subRow["menu_id"].ToString();
DataRow[] rows1 = table.Select("parent_id='" + parentID1 + "'");
foreach (DataRow subRow1 in rows1)
{
string text = subRow1["menuname"].ToString();
string value = subRow1["menu_id"].ToString();
chl.Items.Add(text, value);
}
}
}
chl.SelectedValueArray = strAuth.Split(',');
}
protected DataTable GetTable()
{
string strSql = "select menu_id,menuname,parent_id,linkpage from T_MENULIST order by parent_id";
DataTable table = OracleHelper.ExcuteDataTableQuery(CommandType.Text, strSql);
return table;
}
protected string GetAuth()
{
string strSql = "select menu_ids from T_AUTHORITY where role_id='" + role + "'";
object result = OracleHelper.ExecuteScalar(strSql);
if (null == result)
return "";
else
return result.ToString();
}
#region Events
protected void btnSaveRefresh_Click(object sender, EventArgs e)
{
System.Text.StringBuilder strAuth = new System.Text.StringBuilder("");
foreach (CheckBoxList list in this.form1.Controls)
{
foreach (string item in list.SelectedValueArray)
{
if (strAuth.Length != 0)
strAuth.Append(",");
else
strAuth.Append(item);
}
}
string strSql = "update T_AUTHORITY set menu_ids='" + strAuth + "' where role_id='" + role + "'";
try
{
int result = OracleHelper.ExecuteNonQuery(strSql);
PageContext.RegisterStartupScript(ActiveWindow.GetHideRefreshReference());
}
catch (Exception ex)
{
Alert.Show("修改权限失败!");
}
}
#endregion
}
复制代码
作者:
F壹
时间:
2013-6-19 11:43
标题:
接楼上,前台代码以及堆栈错误代码
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AuthorityManager.aspx.cs" Inherits="sysman_images_AuthorityManager" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head id="Head1" runat="server">
<title></title>
<link href="../css/main.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<ext:PageManager ID="PageManager2" AutoSizePanelID="Panel1" runat="server" />
<ext:Panel ID="Panel1" runat="server" Layout="Fit" ShowBorder="False" ShowHeader="false"
BodyPadding="5px" EnableBackgroundColor="true">
<Toolbars>
<ext:Toolbar ID="Toolbar1" runat="server">
<Items>
<ext:Button ID="btnClose" EnablePostBack="false" Text="关闭" runat="server" Icon="SystemClose">
</ext:Button>
<ext:Button ID="btnSaveRefresh" Text="保存-关闭-刷新父页面" runat="server" Icon="SystemSaveNew"
OnClick="btnSaveRefresh_Click">
</ext:Button>
<ext:ToolbarFill ID="ToolbarFill1" runat="server">
</ext:ToolbarFill>
<%--<ext:Button ID="Button1" Text="弹出对话框" runat="server" OnClick="Button1_Click">
</ext:Button>--%>
<ext:ToolbarText ID="ToolbarText1" Text="提示一" runat="server">
</ext:ToolbarText>
<ext:ToolbarSeparator ID="ToolbarSeparator2" runat="server">
</ext:ToolbarSeparator>
<ext:ToolbarText ID="ToolbarText2" Text="提示二 " runat="server">
</ext:ToolbarText>
</Items>
</ext:Toolbar>
</Toolbars>
<Items>
<ext:Panel ID="Panel2" Layout="Fit" runat="server" ShowBorder="false" ShowHeader="false">
<Items>
<ext:Accordion ID="Accordion1" Title="分配权限" runat="server" Width="600px" Height="450px"
EnableFill="true" ShowBorder="True" ActiveIndex="1">
<Panes>
</Panes>
</ext:Accordion>
</Items>
</ext:Panel>
</Items>
</ext:Panel>
</form>
</body>
</html>
复制代码
异常详细信息: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
参数名: index
源错误:
执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。
堆栈跟踪:
[ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
参数名: index]
System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) +64
System.ThrowHelper.ThrowArgumentOutOfRangeException() +15
System.Collections.Generic.List`1.get_Item(Int32 index) +7500212
ExtAspNet.Accordion.OnFirstPreRender() +187
ExtAspNet.ControlBase.OnPreRender(EventArgs e) +232
System.Web.UI.Control.PreRenderRecursiveInternal() +80
System.Web.UI.Control.PreRenderRecursiveInternal() +171
System.Web.UI.Control.PreRenderRecursiveInternal() +171
System.Web.UI.Control.PreRenderRecursiveInternal() +171
System.Web.UI.Control.PreRenderRecursiveInternal() +171
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +842
复制代码
作者:
F壹
时间:
2013-6-19 14:24
一如既往,没人回答,不过我自己貌似找到原因了,这个跟后台没关系,而跟手风琴选项卡有关系,手风琴选项卡好像只能作为ext:region的子控件布局。
作者:
F壹
时间:
2013-6-19 14:40
不过这问下其他问题。比如
CheckBoxList list in this.form1.Controls
这一句就出现无法转化的的错误,因为两个control类型不同,如果
CheckBoxList list in this.SimpleForm1.Controls
这样写的话,虽然后面的类型还是webcontrol,但是由于后面的结果集是零,就不在检测类型匹配不匹配。请问如何解决这一问题。或者有什么变通的方法。
欢迎光临 FineUI 官方论坛 (https://fineui.com/bbs/)
Powered by Discuz! X3.4