0

以下のコードを検討してください。

\DataTable dt =(DataTable) Session["dfdtemptable"];
    // Remove all
            int i = dt.Rows.Count;
        while(i> 0)
        {
        dt.Rows[i-1].Delete();
        dt.Rows[i - 1].AcceptChanges();
        i--;
        }
        Session["dfdtemptable"] = dt;
        this.BindItems();

addnew ボタンがクリックされると、上記のコードが実行されます。ただし、セッション変数にはまだ古い値が含まれており、変数はクリアされていません..しかし、セッション変数をクリアして、セッションに値がないようにする必要があります。

4

2 に答える 2

0

あなたのコードによると、それは起こる可能性があります。i <= 0の場合のB'cosは、以前と同じ値が存在します。B'cosあなたのセッションは外側のループにあります。それを確認してください。

 while(i> 0)
    {
    dt.Rows[i-1].Delete();
    dt.Rows[i - 1].AcceptChanges();
    i--;
    }
    Session["dfdtemptable"] = dt;

Session["dfdtemptable"];割り当てられた場所を確認してください(origin-表示されていません-生成可能なb'cos 0 for i)。

于 2012-12-04T19:23:52.533 に答える
0

すべての行を削除するだけであれば、ループする必要はないと思います。これを試して

DataTable dt =(DataTable) Session["dfdtemptable"];
dt.Clear();

Session["dfdtemptable"] = dt;
于 2012-12-04T19:51:25.273 に答える