protected void btningAccept_Click(object sender, EventArgs e)
{
if(!(txtLOVCode.Text==" "||txtLOVvalue.Text==" "))
{
rowid++;
// DFDLOVlst.Visible=true;
DataTable dt = createTemptable();
dt = (DataTable)Session["dfdtemptable"];
DataRow dr = dt.NewRow();
dr["prociLOV_Id"] = rowid;
dr["prociLOV_Value"] = txtLOVvalue.Text;
dr["prociLOV_Code"] = txtLOVCode.Text;
Boolean isalreadyinLOVlst = false;
foreach (DataRow chkrow in dt.Rows)
{
if (String.Equals(dr["prociLOV_Value"].ToString().Trim(), chkrow["prociLOV_Value"].ToString().Trim(),StringComparison.CurrentCultureIgnoreCase)
&& String.Equals(dr["prociLOV_Code"].ToString().Trim(), chkrow["prociLOV_Code"].ToString().Trim(), StringComparison.CurrentCultureIgnoreCase))
{
isalreadyinLOVlst = true;
break;
}
}
if (isalreadyinLOVlst)
{
this.lblMessage.Text = "LOV value: " + dr["prociLOV_Value"].ToString() + ": " + dr["prociLOV_Code"].ToString() + " already exits";
}
else
{
this.lblMessage.Text = " ";
dt.Rows.Add(dr);
DataTable addedLOV = createTemptable();
addedLOV = (DataTable)Session["addedLOV"];
addedLOV.ImportRow(dr); ;
Session["addedLOV"] = addedLOV;
}
DFDLOVlst.DataSource = dt;
DFDLOVlst.DataBind();
// dt.AcceptChanges();
Session["dfdtemptable"] = dt;
txtLOVCode.Text = "";
txtLOVvalue.Text = "";
MDIngrdientsCode.Hide();
this.txtLOVvalue.ReadOnly = false;
this.txtLOVCode.ReadOnly = false;
}
else
this.lblMessage.Text="NO LOV VALUES ENTERED";
}
此处会话变量Session["dfdtemptable"]
和Session["addedLOV"]
都会更新两次,每个会话变量的行数变为2。但每个会话变量的行计数应为1。但是,当另一个Session变量更新时,Session变量会更新。
分配或更新Session["dfdtemptable"]
时,Session["addedLOV"]
会更新。我无法弄清楚问题。
答案 0 :(得分:0)
我认为createTempTable
方法存在问题,但此处未显示。似乎你的dt(aka dfdTempTable)和addedLov(又名addedLOV)都引用了相同的DataTable。
我建议你从Debug模式开始,在执行期间检查dt和addedLOV表中的行,或者在Debug.Watch窗口中使用Make Object Id比较这两个对象。