こんにちは、各ボタンのような特定の操作でビューステートのデータテーブルを割り当てています。行を割り当て、それをデータテーブルにバインドし、そのデータテーブルをビューステートに割り当てます。私が作成していたデータテーブルにバインドされたグリッドビューを持っています。行を削除する際に削除オプションを使用しているため、ビューステートをクリアし、新しいデータテーブルに割り当てます
DataTable dtPayment = new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
}
}
protected void btn_Click(object sender, EventArgs e)
{
if (ViewState["CurrentTable"] == null)
{
dtPayment.Columns.Add("Id", typeof(string));
dtPayment.Columns.Add("PaymentMode", typeof(string));
dtPayment.Columns.Add("TransactionAmount", typeof(string));
dtPayment.Columns.Add("BankCharges", typeof(string));
dtPayment.Columns.Add("Particulars", typeof(string));
DataRow dr = dtPayment.NewRow();
dr["Id"] = 1;
dr["PaymentMode"] = "Cheque";
dr["TransactionAmount"] = txtAmount.Text;
dr["BankCharges"] = "";
dr["Particulars"] = "";
dtPayment.Rows.Add(dr);
ViewState["CurrentTable"] = dtPayment;
grd.DataSource = dtPayment;
grd.DataBind();
}
else
{
AddNewRowToGrid("Cheque", txtAmount.Text);
}
}
protected void grd_Deleting(object sender, DeletingEventArgs e)
{
dt = (DataTable)ViewState["CurrentTable"];
int iIndex;
iIndex = grd.FocusedRowIndex;
dt.Rows[iIndex].Delete();
dt.AcceptChanges();
ViewState.Remove("CurrentTable");
ViewState["CurrentTable"] = dt;
grd.DataSource = dt;
grd.DataBind();
}
protected void AddNewRowToGrid(string strPaymntMode, string transAmount)
{
int rowIndex = 0;
//SetPreviousData();
if (ViewState["CurrentTable"] != null)
{
DataTable dtCurrentTable = (DataTable)ViewState["CurrentTable"];
DataRow drCurrentRow = null;
if (dtCurrentTable.Rows.Count > 0)
{
for (int i = 1; i <= dtCurrentTable.Rows.Count; i++)
{
drCurrentRow = dtCurrentTable.NewRow();
drCurrentRow["Id"] = i + 1;
drCurrentRow["PaymentMode"] = strPaymntMode;
drCurrentRow["TransactionAmount"] = transAmount;
drCurrentRow["BankCharges"] = "";
drCurrentRow["Particulars"] = "";
rowIndex++;
}
dtCurrentTable.Rows.Add(drCurrentRow);
ViewState["CurrentTable"] = dtCurrentTable;
grd.DataSource = dtCurrentTable;
grd.DataBind();
}
}
}
しかし、1回の削除後にそれを表示すると、データテーブルは以前の値を持つものと同じままで、どこが間違っていたのかを知ることができます