目标:
每选择一个新的offercode,点按钮
把新记录添加进当前的grdview,并要记住之前添加的记录
思路:
从 offercode 取得该条记录信息
点击按钮添加时,给datatable创建一个新行填入数据,并保存到session
每次页面刷新从session中读入全部记录的datatable,并绑定grdview
=========================================================
// 读取原有的GridView
DataTable CargoInfoTable = ReadGridView();// 新增加一行
DataRow newRow = CargoInfoTable.NewRow();
// 将新增加的这一行添加到原有的GridView上
CargoInfoTable.Rows.Add(newRow);
// 设置最后一行的是否只读
CargoInfoTable.Rows[CargoInfoTable.Rows.Count - 1]["EnableFlag"] = "1";
// 将变化后的Table帮定在GridView上
this.CargoInfo.DataSource = CargoInfoTable;
this.CargoInfo.DataBind();
private DataTable ReadGridView()
{
DataTable newDataTable = new DataTable("Table1");
newDataTable = doAddOneLineColumns(newDataTable);
for (int i = 0; i < CargoInfo.Rows.Count; i++)
{
GridViewRow gRow = CargoInfo.Rows[i];
DataRow newRow = newDataTable.NewRow();
newRow[0] = ((HtmlInputText)gRow.FindControl("CargoInListID")).Value;
newRow[1] = ((HtmlInputText)gRow.FindControl("EnableFlag")).Value;
newRow[2] = ((HtmlInputText)gRow.FindControl("pid")).Value;
........
newRow[29] = ((TextBox)gRow.FindControl("Mender")).Text;
newDataTable.Rows.Add(newRow);
}
newDataTable.AcceptChanges();
return newDataTable;
}
/// <summary>
/// 添加行之前,给这一行添加各个列名
/// </summary>
/// <param name="aimDataTable"></param>
/// <returns></returns>
private DataTable doAddOneLineColumns(DataTable aimDataTable)
{
aimDataTable.Columns.Add("CargoInListID");
aimDataTable.Columns.Add("EnableFlag");
aimDataTable.Columns.Add("pid");
aimDataTable.Columns.Add("ProvideName");
.......
aimDataTable.Columns.Add("Mender");
return aimDataTable;
}
-------------------------------------------------------------------------------------------------------------------------
DataTable dt1 = new DataTable("Table1");
dt1.Columns.Add("ID");
dt1.Columns.Add("产品");
dt1.Columns.Add("数量");
dt1.Columns.Add("日期");
dt1.Columns.Add("状态");
for(int i =0;i<GridView1.Rows.Count;i++)
{
GridViewRow gRow = GridView1.Rows[i];
DataRow newRow = dt1.NewRow();
newRow[0] = GridView1.DataKeys[i].Value;
newRow[1] = ((TextBox)gRow.FindControl("TextBox1")).Text;
newRow[2] = ((TextBox)gRow.FindControl("TextBox2")).Text;
newRow[3] = ((TextBox)gRow.FindControl("TextBox3")).Text;
newRow[4] = ((DropDownList)gRow.FindControl("DropDownList1")).SelectedValue;
dt1.Rows.Add(newRow);
}