CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  VB.NET

江湖救急——DataGrid无法更新数据.错误提示:指定的参数已超出有效值的范围。参数名: index

楼主wuxiangwu()2006-06-03 10:40:22 在 .NET技术 / VB.NET 提问

前台代码:  
  <asp:datagrid   id="DataGrid1"   style="Z-INDEX:   105;   LEFT:   208px;   POSITION:   absolute;   TOP:   8px"   runat="server"  
  Height="232px"   Width="370px"   OnPageIndexChanged="Page_Changed"   AlternatingItemStyle-BackColor="#0099ff"   AllowPaging="True"   BackColor="#66ffcc"  
  BorderColor="#000033"   GridLines="Vertical"   CellPadding="3"   PagerStyle-Mode="NextPrev"   PagerStyle-NextPageText="下一页"   PagerStyle-PrevPageText="上一页"  
  CellSpacing="0"   PagerStyle-Position="TopAndBottom"   PagerStyle-HorizontalAlign="Right"   PagerStyle-BackColor="#66cc00"   PagerStyle-ForeColor="#ccff66"  
  PageSize="5"   HeaderStyle-BackColor="#0033ff"   HeaderStyle-ForeColor="#ffffff"   AutoGenerateColumns="False"   DataKeyField="institute_id"   OnEditCommand="myDataGrid_Edit"  
  OnCancelCommand="myDataGrid_Cancel"   OnUpdateCommand="myDataGrid_Update">  
  <Columns>  
  <asp:BoundColumn   DataField="institute_id"   ReadOnly="True"   HeaderText="学院代号"   HeaderStyle-HorizontalAlign="Center"   />  
  <asp:BoundColumn   DataField="institute_name"   HeaderText="学院名"   HeaderStyle-HorizontalAlign="Center"   />  
  <asp:EditCommandColumn   HeaderText="修改"   HeaderStyle-HorizontalAlign="Center"   ItemStyle-Wrap="False"   EditText="修改"  
  CancelText="取消"   UpdateText="更新"   />  
  </Columns>  
  </asp:datagrid>  
   
   
  后台代码:  
  Imports   System  
  Imports   System.Web  
  Imports   System.Drawing  
  Imports   System.Web.UI.WebControls  
  Imports   System.Collections  
  Imports   System.Data.OleDb  
  Imports   System.Data  
  Imports   System.Web.SessionState  
  Imports   System.Web.UI  
  Imports   System.Web.UI.HtmlControls  
  Imports   System.Data.SqlClient  
  Imports   System.Configuration  
  Public   Class   institute_modify  
          Inherits   System.Web.UI.Page  
   
  #Region   "   Web   窗体设计器生成的代码   "  
   
          '该调用是   Web   窗体设计器所必需的。  
          <System.Diagnostics.DebuggerStepThrough()>   Private   Sub   InitializeComponent()  
   
          End   Sub  
          Protected   WithEvents   DataGrid1   As   System.Web.UI.WebControls.DataGrid  
   
          '注意:   以下占位符声明是   Web   窗体设计器所必需的。  
          '不要删除或移动它。  
          Private   designerPlaceholderDeclaration   As   System.Object  
          Protected   WithEvents   Label3   As   System.Web.UI.WebControls.Label  
          Private   myDataSet   As   DataSet  
          Private   components   As   System.ComponentModel.Container  
          Dim   dview   As   DataView  
          Dim   dt   As   DataTable  
   
          Private   Sub   Page_Init(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   MyBase.Init  
                  'CODEGEN:   此方法调用是   Web   窗体设计器所必需的  
                  '不要使用代码编辑器修改它。  
                  InitializeComponent()  
   
          End   Sub  
   
  #End   Region  
   
          Private   Sub   Page_Load(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   MyBase.Load  
                  '在此处放置初始化页的用户代码  
                  Dim   ConnString   As   String   =   ConfigurationSettings.AppSettings("ConnectionString")  
                  Dim   Conn   As   SqlConnection   =   New   SqlConnection(ConnString)  
                  If   Not   IsPostBack   Then  
                          Grid_Bind()  
                  End   If  
          End   Sub  
          Sub   Grid_Bind()  
                  Dim   ConnString   As   String   =   ConfigurationSettings.AppSettings("ConnectionString")  
                  Dim   Conn   As   SqlConnection   =   New   SqlConnection(ConnString)  
                  Dim   SelectCommand   As   String   =   "select   *   from   institute_information"  
                  Dim   MyCommand   As   SqlDataAdapter   =   New   SqlDataAdapter(SelectCommand,   Conn)  
                  Dim   DS   As   DataSet   =   New   DataSet  
                  MyCommand.Fill(DS,   "institute_information")  
                  DataGrid1.DataSource   =   DS.Tables("institute_information").DefaultView  
                  DataGrid1.DataBind()  
          End   Sub  
          Sub   Page_Changed(ByVal   Src   As   Object,   ByVal   E   As   DataGridPageChangedEventArgs)  
                  Grid_Bind()  
          End   Sub  
          Sub   myDataGrid_Edit(ByVal   sender   As   Object,   ByVal   E   As   DataGridCommandEventArgs)  
                  DataGrid1.EditItemIndex   =   E.Item.ItemIndex  
                  Grid_Bind()  
          End   Sub  
          Sub   myDataGrid_Cancel(ByVal   sender   As   Object,   ByVal   e   As   DataGridCommandEventArgs)  
                  DataGrid1.EditItemIndex   =   -1  
                  Grid_Bind()  
          End   Sub  
   
          Sub   myDataGrid_Update(ByVal   sender   As   Object,   ByVal   e   As   DataGridCommandEventArgs)  
                  Dim   institute_id   As   TextBox  
                  Dim   institute_name   As   TextBox  
                  institute_id   =   DataGrid1.DataKeys(e.Item.ItemIndex)  
                  institute_name   =   e.Item.FindControl("institute_name")  
   
                  Dim   ConnString   As   String   =   ConfigurationSettings.AppSettings("ConnectionString")  
                  Dim   Conn   As   SqlConnection   =   New   SqlConnection(ConnString)  
                  Dim   UpdataCmd   As   String   =   "UPDATA   institute_information   SET   institute_name=@institute_name   WHERE   institute_id=@institute_id"  
                  Dim   MyCommand   As   SqlCommand   =   New   SqlCommand(UpdataCmd,   Conn)  
                  MyCommand.CommandText   =   UpdataCmd  
                  MyCommand.Parameters.Add(New   System.Data.SqlClient.SqlParameter("@institute_id",   SqlDbType.Char,   10))  
                  MyCommand.Parameters.Add(New   System.Data.SqlClient.SqlParameter("@institute_name",   SqlDbType.VarChar,   50))  
                  MyCommand.Parameters("@institute_id").Value   =   DataGrid1.DataKeys.Item(e.Item.ItemIndex)  
                  MyCommand.Parameters("@institute_name").Value   =   CType(institute_name.Text,   String)  
   
                  Conn.Open()  
                  MyCommand.Connection   =   Conn  
                  MyCommand.ExecuteNonQuery()  
                  DataGrid1.EditItemIndex   =   -1  
                  Conn.Close()  
                  Grid_Bind()  
   
          End   Sub  
          Private   Sub   DataGrid1_SelectedIndexChanged(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   DataGrid1.SelectedIndexChanged  
   
          End   Sub  
  End   Class  
   
   
  错误提示:  
  指定的参数已超出有效值的范围。参数名:   index    
  说明:   执行当前   Web   请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。    
   
  异常详细信息:   System.ArgumentOutOfRangeException:   指定的参数已超出有效值的范围。参数名:   index  
   
  源错误:    
   
   
  行   72:           Sub   myDataGrid_Update(ByVal   sender   As   Object,   ByVal   e   As   DataGridCommandEventArgs)  
  行   73:                   Dim   institute_id   As   TextBox  
  行   74:                   Dim   institute_name   As   TextBox  
  行   75:                   institute_id   =   DataGrid1.DataKeys(e.Item.ItemIndex)  
  行   76:                   institute_name   =   e.Item.FindControl("institute_name")  
     
   
  源文件:   G:\wuxiangwu\institute_modify.aspx.vb         行:   74    
  堆栈跟踪:    
   
   
  [ArgumentOutOfRangeException:   指定的参数已超出有效值的范围。  
  参数名:   index]  
        System.Web.UI.ControlCollection.get_Item(Int32   index)   +58  
        wuxiangwu.institute_modify.myDataGrid_Update(Object   sender,   DataGridCommandEventArgs   e)   in   G:\wuxiangwu\institute_modify.aspx.vb:74  
        System.Web.UI.WebControls.DataGrid.OnUpdateCommand(DataGridCommandEventArgs   e)   +109  
        System.Web.UI.WebControls.DataGrid.OnBubbleEvent(Object   source,   EventArgs   e)   +507  
        System.Web.UI.Control.RaiseBubbleEvent(Object   source,   EventArgs   args)   +26  
        System.Web.UI.WebControls.DataGridItem.OnBubbleEvent(Object   source,   EventArgs   e)   +106  
        System.Web.UI.Control.RaiseBubbleEvent(Object   source,   EventArgs   args)   +26  
        System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs   e)   +121  
        System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String   eventArgument)   +115  
        System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler   sourceControl,   String   eventArgument)   +18  
        System.Web.UI.Page.RaisePostBackEvent(NameValueCollection   postData)   +138  
        System.Web.UI.Page.ProcessRequestMain()   +1277  
   
  问题点数:20、回复次数:1Top

1 楼dutguoyi(新鲜鱼排)回复于 2006-06-03 11:30:46 得分 0

指定的参数已超出有效值的范围  
  这个错误一般:  
  1.有些处理需要先绑定数据再处理(否则没有数据可供处理.)  
  2.对于Item循环时,需要从0到Items.count-1(而不是Items.count)Top

相关问题

关键词

得分解答快速导航

  • 帖主:wuxiangwu

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo