안녕하세요 모두 특정 작업에 대한 viewstate에 대한 Datatable을 할당 할 것입니다. 각 단추에 행을 할당하고 해당 데이터 테이블에 바인딩하고 해당 데이터 테이블을 viewstate에 할당합니다. 내가 만든 datatable 바인딩 된 gridview 데있다. 그 나는 행을 삭제에서 삭제 옵션을 데 내가 viewstate가 지워지고 새로운 datattableviewstate를 지울 수 없습니다
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 레코드가 잘 작동하지만, 두 번째 레코드를 삭제에 이전 값이 viewstate가 – Learner
에 유지됩니다 그렇게 http://stackoverflow.com/ 아래 참조하십시오 a/15740413/2218635 –
page_load에 데이터 테이블을 바인딩하지 않았는지, 그리고 grd_Deleting 이벤트에서 변경 한 내용을 쓰는 것이 끝났는지 확인하십시오. – Adil