FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 2014|回复: 3
打印 上一主题 下一主题

一个错误,比较怪异,求救

[复制链接]
跳转到指定楼层
楼主
发表于 2013-6-19 11:41:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这个错误在调试过程中没有任何提示的,一直到PageLoad的最后一句都没有错误。
后台代码
  1. using System;
  2. using System.Collections;
  3. using System.Configuration;
  4. using System.Data;
  5. using System.Web;
  6. using System.Web.Security;
  7. using ExtAspNet;

  8. public partial class sysman_images_AuthorityManager : System.Web.UI.Page
  9. {
  10.     public string role;
  11.     protected void Page_Load(object sender, EventArgs e)
  12.     {
  13.         if (!IsPostBack)
  14.         {
  15.             role = Request.QueryString["roleid"].ToString().Trim();
  16.             CreateAccordion();
  17.             btnClose.OnClientClick = ActiveWindow.GetConfirmHidePostBackReference();
  18.         }
  19.     }

  20.    
  21.     protected void CreateAccordion()
  22.     {
  23.         DataTable table = GetTable();
  24.         DataRow[] rows = table.Select("PARENT_ID is null");
  25.         foreach (DataRow row in rows)
  26.         {
  27.             //if (row.IsNull("PARENT_ID"))
  28.             //{
  29.                 AccordionPane accordionPane = new AccordionPane();
  30.                 accordionPane.Title = row["menuname"].ToString();
  31.                 accordionPane.Layout = Layout.Fit;
  32.                 accordionPane.ShowBorder = false;
  33.                 accordionPane.BodyPadding = "2px 0 0 0";
  34.                 this.Accordion1.Items.Add(accordionPane);
  35.                 ResolveSubRow(table,row,accordionPane);
  36.             //}
  37.         }

  38.     }   

  39.     protected void ResolveSubRow(DataTable table,DataRow row,AccordionPane pan)
  40.     {
  41.         string strAuth = GetAuth();
  42.         string parentID = row["menu_id"].ToString();
  43.         DataRow[] rows = table.Select("parent_id='" + parentID + "'");
  44.         CheckBoxList chl = new CheckBoxList();
  45.         chl.Label = row["menuname"].ToString();
  46.         chl.ColumnNumber = 3;
  47.         pan.Items.Add(chl);
  48.         foreach (DataRow subRow in rows)
  49.         {
  50.             if (!subRow.IsNull("linkpage"))
  51.             {
  52.                 string text = subRow["menuname"].ToString();
  53.                 string value = subRow["menu_id"].ToString();
  54.                 chl.Items.Add(text,value);               
  55.             }
  56.             else
  57.             {
  58.                 string parentID1 = subRow["menu_id"].ToString();
  59.                 DataRow[] rows1 = table.Select("parent_id='" + parentID1 + "'");
  60.                 foreach (DataRow subRow1 in rows1)
  61.                 {
  62.                     string text = subRow1["menuname"].ToString();
  63.                     string value = subRow1["menu_id"].ToString();
  64.                     chl.Items.Add(text, value);
  65.                 }
  66.             }
  67.         }
  68.         chl.SelectedValueArray = strAuth.Split(',');        
  69.     }


  70.     protected DataTable GetTable()
  71.     {
  72.         string strSql = "select menu_id,menuname,parent_id,linkpage from T_MENULIST order by parent_id";
  73.         DataTable table = OracleHelper.ExcuteDataTableQuery(CommandType.Text, strSql);
  74.         return table;
  75.     }

  76.     protected string GetAuth()
  77.     {
  78.         string strSql = "select menu_ids from T_AUTHORITY where role_id='" + role + "'";
  79.         object result = OracleHelper.ExecuteScalar(strSql);
  80.         if (null == result)
  81.             return "";
  82.         else
  83.             return result.ToString();
  84.     }

  85.     #region Events

  86.     protected void btnSaveRefresh_Click(object sender, EventArgs e)
  87.     {
  88.         System.Text.StringBuilder strAuth = new System.Text.StringBuilder("");
  89.         foreach (CheckBoxList list in this.form1.Controls)
  90.         {
  91.             foreach (string item in list.SelectedValueArray)
  92.             {
  93.                 if (strAuth.Length != 0)
  94.                     strAuth.Append(",");
  95.                 else
  96.                     strAuth.Append(item);
  97.             }        

  98.         }
  99.         string strSql = "update T_AUTHORITY set menu_ids='" + strAuth + "' where role_id='" + role + "'";
  100.         try
  101.         {
  102.             int result = OracleHelper.ExecuteNonQuery(strSql);
  103.             PageContext.RegisterStartupScript(ActiveWindow.GetHideRefreshReference());
  104.         }
  105.         catch (Exception ex)
  106.         {
  107.             Alert.Show("修改权限失败!");
  108.         }
  109.     }
  110.    

  111.     #endregion


  112. }
复制代码



沙发
 楼主| 发表于 2013-6-19 11:43:47 | 只看该作者

接楼上,前台代码以及堆栈错误代码

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="AuthorityManager.aspx.cs" Inherits="sysman_images_AuthorityManager" %>

  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

  3. <html>
  4. <head id="Head1" runat="server">
  5.     <title></title>
  6.     <link href="../css/main.css" rel="stylesheet" type="text/css" />
  7. </head>
  8. <body>   
  9.     <form id="form1" runat="server">
  10.     <ext:PageManager ID="PageManager2" AutoSizePanelID="Panel1" runat="server" />
  11.     <ext:Panel ID="Panel1" runat="server" Layout="Fit" ShowBorder="False" ShowHeader="false"
  12.         BodyPadding="5px" EnableBackgroundColor="true">
  13.         <Toolbars>
  14.             <ext:Toolbar ID="Toolbar1" runat="server">
  15.                 <Items>
  16.                     <ext:Button ID="btnClose" EnablePostBack="false" Text="关闭" runat="server" Icon="SystemClose">
  17.                     </ext:Button>
  18.                     <ext:Button ID="btnSaveRefresh" Text="保存-关闭-刷新父页面" runat="server" Icon="SystemSaveNew"
  19.                         OnClick="btnSaveRefresh_Click">
  20.                     </ext:Button>
  21.                     <ext:ToolbarFill ID="ToolbarFill1" runat="server">
  22.                     </ext:ToolbarFill>
  23.                     
  24.                     <%--<ext:Button ID="Button1" Text="弹出对话框" runat="server" OnClick="Button1_Click">
  25.                     </ext:Button>--%>
  26.                     <ext:ToolbarText ID="ToolbarText1" Text="提示一" runat="server">
  27.                     </ext:ToolbarText>
  28.                     <ext:ToolbarSeparator ID="ToolbarSeparator2" runat="server">
  29.                     </ext:ToolbarSeparator>
  30.                     <ext:ToolbarText ID="ToolbarText2" Text="提示二  " runat="server">
  31.                     </ext:ToolbarText>
  32.                 </Items>
  33.             </ext:Toolbar>
  34.         </Toolbars>
  35.         <Items>
  36.             <ext:Panel ID="Panel2" Layout="Fit" runat="server" ShowBorder="false" ShowHeader="false">
  37.                 <Items>
  38.                     <ext:Accordion ID="Accordion1" Title="分配权限" runat="server" Width="600px" Height="450px"
  39.                         EnableFill="true" ShowBorder="True" ActiveIndex="1">
  40.                         <Panes>                          
  41.                         </Panes>
  42.                     </ext:Accordion>
  43.                 </Items>
  44.             </ext:Panel>
  45.         </Items>
  46.     </ext:Panel>
  47.     </form>

  48.    
  49. </body>
  50. </html>
复制代码
  1. 异常详细信息: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
  2. 参数名: index

  3. 源错误:


  4. 执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。  

  5. 堆栈跟踪:



  6. [ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
  7. 参数名: index]
  8.    System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) +64
  9.    System.ThrowHelper.ThrowArgumentOutOfRangeException() +15
  10.    System.Collections.Generic.List`1.get_Item(Int32 index) +7500212
  11.    ExtAspNet.Accordion.OnFirstPreRender() +187
  12.    ExtAspNet.ControlBase.OnPreRender(EventArgs e) +232
  13.    System.Web.UI.Control.PreRenderRecursiveInternal() +80
  14.    System.Web.UI.Control.PreRenderRecursiveInternal() +171
  15.    System.Web.UI.Control.PreRenderRecursiveInternal() +171
  16.    System.Web.UI.Control.PreRenderRecursiveInternal() +171
  17.    System.Web.UI.Control.PreRenderRecursiveInternal() +171
  18.    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +842

  19.   

复制代码
板凳
 楼主| 发表于 2013-6-19 14:24:04 | 只看该作者

一如既往,没人回答,不过我自己貌似找到原因了,这个跟后台没关系,而跟手风琴选项卡有关系,手风琴选项卡好像只能作为ext:region的子控件布局。
地板
 楼主| 发表于 2013-6-19 14:40:55 | 只看该作者
不过这问下其他问题。比如
CheckBoxList list in this.form1.Controls
这一句就出现无法转化的的错误,因为两个control类型不同,如果
CheckBoxList list in this.SimpleForm1.Controls
这样写的话,虽然后面的类型还是webcontrol,但是由于后面的结果集是零,就不在检测类型匹配不匹配。请问如何解决这一问题。或者有什么变通的方法。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-11-28 16:00 , Processed in 0.045879 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表