有一个订单  
上面是订单的基本信息(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 处没有任何行。不知道这个怎么处理了,