首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

再开帖问同样的有关问题,来帮看看异常

2012-01-18 
再开帖问同样的问题,高手进来帮看看错误!我写的代码如下:aspx:tablealign center border 0 cellpad

再开帖问同样的问题,高手进来帮看看错误!
我写的代码如下:
aspx:
                                                                <table   align= "center "   border= "0 "   cellpadding= "0 "   cellspacing= "2 "   style= "left:   0px;position:   relative;   top:   0px "   width= "90% ">
                                                                                <tr>
                                                                                <td>
                                                                                <asp:DataList   id= "list1 "     Runat= "server "   Width= "100% ">
<ItemTemplate>
<table   border= "0 "   cellpadding= "0 "   cellspacing= "0 "   width= "100% ">
<tr   class= "altbg2 "   onmouseover= "this.className= 'altbg1 ' "   onmouseout= "this.className= 'altbg2 ' "   align= "center ">
<td   width= "10% "> <asp:CheckBox   ID= "chkSelect "   runat= "server "   /> </td>
<td   width= "28% "   align= "left "> <%#   Eval( "chanpinmingcheng ")   %> </td>
<td   width= "13% "> <%#   Eval( "fabushijian ")   %> </td>
<td   width= "8% "> <a   href= 'zhanqu_edit.aspx?id= <%#   Eval( "zh_id ")   %> '> [ 编辑 ] </a> </td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>
</td>
</tr>
<tr>
<td>
                        <asp:CheckBox   ID= "chkall "   runat= "server "   Text= "全选 "   onclick= "chkSelect(); "   />
                                                                                        <asp:ImageButton   ID= "ImageButton1 "     src= "images/shanchu.bmp "   runat= "server "   Style= "position:   relative "   OnClick= "ImageButton1_Click "   /> //删除选中的
                                                                               


                                                                                        </td>
</tr>
                                                                </table>


cs:
        SqlConnection   conn;
        SqlCommand   cmd;
        protected   void   Page_Load(object   sender,   EventArgs   e)
        {
          if(!ispostback)
          {      
                                      string   aa   =   Session[ "name "].ToString();
                                conn   =   new   SqlConnection             (System.Configuration.ConfigurationSettings.AppSettings[ "ConnStr "]);
                                conn.Open();
                                SqlCommand   cmd   =   new   SqlCommand( "select   *   from   zhanquxinxi   where   faburen= ' "   +   aa   +   " '   and   shenhe=1     order   by   fabushijian   desc ",   conn);
                                SqlDataAdapter   adapter   =   new   SqlDataAdapter(cmd);
                                DataSet   ds   =   new   DataSet();
                                adapter.Fill(ds,   "zhanquxinxi ");
                                pager1.RecordCount   =   ds.Tables[ "zhanquxinxi "].Rows.Count;
                                this.list1.DataSource   =   ds.Tables[ "zhanquxinxi "];
                                list1.DataKeyField   =   ds.Tables[ "zh_id "].ToString();
                                list1.DataBind();
                                conn.Close();
                                BindData1();
}
}

  protected   void   ImageButton1_Click(object   sender,   ImageClickEventArgs   e)


        {
                int[]   ID   =   new   int[list1.Items.Count];
                int   i   =   0;

                foreach   (DataListItem   dl   in   list1.Items)
                {
                        CheckBox   chk   =   (CheckBox)dl.FindControl( "chkSelect ");
                        if   (chk.Checked)
                        {
                                ID[i]   =   Convert.ToInt32(list1.DataKeys[dl.ItemIndex].ToString());
                                try
                                {
                                        conn   =   new   SqlConnection(System.Configuration.ConfigurationSettings.AppSettings[ "ConnStr "]);
                                        conn.Open();
                                        cmd   =   new   SqlCommand( "delete   from   zhanquxinxi   where   zh_id=ID[i] ",   conn);
                                        cmd.ExecuteNonQuery();
     
                                }
                                catch   (Exception   exp)
                                {
                                        Response.Write(exp.Message);
                                }
                        }
                }
                BindData1();
        }


报错:
索引超出范围。必须为非负值并小于集合大小。
参数名:   index  
说明:   执行当前   Web   请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。  

异常详细信息:   System.ArgumentOutOfRangeException:   索引超出范围。必须为非负值并小于集合大小。
参数名:   index

源错误:  


行   171:                         if   (chk.Checked)
行   172:                         {


行   173:                                 ID[i]   =   Convert.ToInt32(list1.DataKeys[dl.ItemIndex].ToString());
行   174:                                 try
行   175:                                 {
 

源文件:   c:\Inetpub\wwwroot\houtai\Medicine\zqcpxxfb.aspx.cs         行:   173  

堆栈跟踪:  


[ArgumentOutOfRangeException:   索引超出范围。必须为非负值并小于集合大小。
参数名:   index]
      System.Collections.ArrayList.get_Item(Int32   index)   +2775837
      System.Web.UI.WebControls.DataKeyCollection.get_Item(Int32   index)   +9
      zqcpxxfb.ImageButton1_Click(Object   sender,   ImageClickEventArgs   e)   in   c:\Inetpub\wwwroot\houtai\Medicine\zqcpxxfb.aspx.cs:173
      System.Web.UI.WebControls.ImageButton.OnClick(ImageClickEventArgs   e)   +75
      System.Web.UI.WebControls.ImageButton.RaisePostBackEvent(String   eventArgument)   +115
      System.Web.UI.WebControls.ImageButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String   eventArgument)   +7
      System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler   sourceControl,   String   eventArgument)   +11
      System.Web.UI.Page.RaisePostBackEvent(NameValueCollection   postData)   +33
      System.Web.UI.Page.ProcessRequestMain(Boolean   includeStagesBeforeAsyncPoint,   Boolean   includeStagesAfterAsyncPoint)   +4919

 


--------------------------------------------
版本信息:   Microsoft   .NET   Framework   版本:2.0.50727.42;   ASP.NET   版本:2.0.50727.42

[解决办法]
你在那行设置一个断点,象这种问题,一般都是第一条和最后一条时候出现的问题。

以上。
[解决办法]
索引超出范围。必须为非负值并小于集合大
[解决办法]
int[] ID = new int[list1.Items.Count];应该是这里的问题
[解决办法]
断点调试,找到数组那个地方看看索引是不是超出了范围?
[解决办法]
调试int[] ID = new int[list1.Items.Count];
查看 list1.Items.Count 是否存在;

cmd = new SqlCommand( "delete from zhanquxinxi where zh_id=ID[i] ", conn);
这句话也是错的 ,zh_id=ID[i] "---》zh_id= '+ID[i].ToString()+ " ' ",
[解决办法]
倒过来,从最后一条往前遍历试试
[解决办法]
解决了``那就接个分
[解决办法]
int[] ID = new int[list1.Items.Count+1];
[解决办法]
int[] ID = new int[list1.Items.Count];
这句改一下:
int[] ID = new int[list1.Items.Count-1];

热点排行