日期:2014-05-19  浏览次数:20440 次

?? 在Session创建了一张表,然后对其进行删除某条记录得时候出问题
有一个订单    
上面是订单的基本信息(OrderInformation)    
中间是订单的子项信息(OrderChildInforamtion)    
下面是显示添加子项得内容(GridView).    
 
现在是在点击保存得时候,订单基本信息,与订单子项信息一起保存到数据库里去.    
 
一个订单可以好个多子项.    
 
现在我是这么做得.    
 
先创建一个Table(ChildItemTable)放在Session里    
代码如下:    


///   <summary>
///   写入订单详细信息
///   </summary>
///   <returns> </returns>
private   void   InsertChildItem()
{
        if   (Session[ "ChildItemTable "]   ==   null)
        {
                Session[ "ChildItemTable "]   =   GetSaleOrderChildItemDataTable
                DataTable   dt   =   (DataTable)Session[ "ChildItemTable "];
                this.InsertIntoSessionDataTable(dt);
                DataBinderDataGrid(dt)
        }
}
public   DataTable   GetSaleOrderChildItemDataTable()
{
        DataTable   dt   =   new   DataTable();
        dt.Columns.Add( "ID ",   Type.GetType( "System.Int32 "));
        dt.Columns.Add( "ChildItemNo ",   Type.GetType( "System.String "));
        dt.Columns.Add( "NumsUnitID ",   Type.GetType( "System.Int32 "));
        return   dt;
}
///   <summary>
///   把当前子项信息写入   Session
///   </summary>
///   <param   name= "dt "> </param>
private   void   InsertIntoSessionDataTable(DataTable   dt)
{
        string   ChildItemNo   =   this.txtChildItem.Text.Trim();
        int   NumsUnitID   =   int.Parse(this.ddlNumUnit.SelectedValue);
        DataRow   dr   =   dt.NewRow();
        dr[ "ID "]   =   dt.Rows.Count;           //ID号
        dr[ "ChildItemNo "]   =   ChildItemNo;
        dr[ "NumsUnitID "]   =   NumsUnitID;
        dt.Rows.Add(dr);
}
private   void   DataBinderDataGrid(DataTable   dt)
{
        this.GridView.DataSource=   dt;
        this.GridView.DataBind();
}
protected   void   GridView1_RowDeleting(object   sender,   DataGridDeleteEventArgs   e)
{
        DataTable   dt   =   (DataTable)Session[ "ChildItemTable "];
        dt.Rows.RemoveAt(id);         ///----------就是这里出错了,
        DataBinderDataGrid(dt);
}
当按着顺序(4,3,2,1)来删除时没有问题

可是当我先删除   3   ,然后现在第   4   得时候就出问题

异常详细信息:   System.IndexOutOfRangeException:   在位置   4   处没有任何行。

不知道这个怎么处理了,


------解决方案--------------------
dt.Rows.RemoveAt(id); ///----------就是这里出错了,