我的asp.net页面中有两个gridviews。数据来自两个不同的数据库。其中,一个gridview具有选择行功能。现在我要做的是,我需要根据第一个gridview的2个单元格和第二个gridview第1列数据的选择逐行生成我的第3个gridview。(第1列数据对于所有行都是通用的)。
gridview中的值按预期显示,但它一次只能保存一行数据。当我继续从下拉列表中选择另一个值时,gridview将刷新并且现有数据将消失并显示新数据。
如何在网格视图中逐行插入所选数据?
以下是我的代码:
protected void btnAssign_Click(object sender, EventArgs e)
{
SetInitialRowToGrid();
int rowIndex = 0;
if (ViewState["TempTable"] != null)
{
// Get TempTable from viewstate
var tempTable = (DataTable)ViewState["TempTable"];
DataRow tempRow = null;
if (tempTable.Rows.Count > 0)
{
for (int i = 1; i <= tempTable.Rows.Count; i++)
{
// Get Grid's Label values
var EmpID =
(Label)grdEmp.SelectedRow.FindControl("lblEmpID");
var firstName =
(Label)grdEmp.SelectedRow.FindControl("lblFirstName");
var date = DateTime.Now.ToString();
var planID =
(Label)grdPlanID.Rows[rowIndex].Cells[1].FindControl("lblPlanID");
// Create new row and update Row Number
tempRow = tempTable.NewRow();
tempTable.Rows[0]["Emp_ID"] = EmpID.Text;
tempTable.Rows[i - 1]["First_Name"] = firstName.Text;
tempTable.Rows[i - 1]["Created_Time"] = date;
tempTable.Rows[i - 1]["Plan_ID"] = planID.Text;
rowIndex++;
}
// Add data to datatable and viewstate
tempTable.Rows.Add(tempRow);
ViewState["TempTable"] = tempTable;
// Attach Gridview Datasource to datatable
grdList.DataSource = tempTable;
grdList.DataBind();
}
}
//Set Previous Data on Postbacks
SetPreviousData();
}
下面给出了SetInitialRowToGrid()代码:
private void SetInitialRowToGrid()
{
// Initialize and Set initial row of Datatable
var tempDataTable = new DataTable();
tempDataTable.Columns.Add("Emp_ID");
tempDataTable.Columns.Add("First_Name");
tempDataTable.Columns.Add("Created_Time");
tempDataTable.Columns.Add("Plan_ID");
tempDataTable.Rows.Add("1", "", "", "");
// Store that datatable into viewstate
ViewState["TempTable"] = tempDataTable;
// Attach Gridview Datasource to datatable
grdList.DataSource = tempDataTable;
grdList.DataBind();
}
SetPreviousData()代码如下:
private void SetPreviousData()
{
int rowIndex = 0;
if (ViewState["TempTable"] != null)
{
var tempTable = (DataTable)ViewState["TempTable"];
if (tempTable.Rows.Count > 0)
{
for (int i = 0; i < tempTable.Rows.Count; i++)
{
var EmpID =
(Label)grdEmp.SelectedRow.FindControl("lblEmpID");
var firstName =
(Label)grdEmp.SelectedRow.FindControl("lblFirstName");
var date = DateTime.Now.ToString();
var planID =
(Label)grdList.Rows[rowIndex].Cells[1].FindControl("lblPlanID");
EmpID.Text = tempTable.Rows[i]["Emp_ID"].ToString();
firstName.Text = tempTable.Rows[i]["First_Name"].ToString();
date = tempTable.Rows[i]["Created_Time"].ToString();
planID.Text = tempTable.Rows[i]["Plan_ID"].ToString();
rowIndex++;
}
}
}
}