DataTable にバインドされた ASP .NET Repeater データがあります。DataTable & に行を追加するBind()
と、Repeater は新しくバインドされたデータを適切に表示し、DataTable から削除しBind()
、Repeater はデータを削除します。
ただし、行が削除されると、DataTable から完全に削除されたにもかかわらず、最後の行が Web ページに表示されるという奇妙な問題が存在します。まるで最後の行のように、Repeater はデータにバインドされていません! しかし、ブレークポイントを置いて、アイテムが DataTable から確実に削除され、Repeater1.DataBound() も呼び出されることを分析しました。ページが更新されると、最後のアイテムも削除されます (当然のことです)。
私はとても絶望的だったので、私はこれをしました。私はこれがばかげていることを知っていますが、データがバインドされているときにリピーターが最終行を保持するようにします。
if (dtTelephoneNumbers.Rows.Count == 0)
dtTelephoneNumbers.Clear();
では、なぜ他のすべてを削除しても問題なく機能し、最後に立っている行を削除すると問題が発生するのでしょうか? 何か案は?
これが私の削除コードです。
protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "DeleteNumber")
{
string[] commandArgs = e.CommandArgument.ToString().Split(new char[] { ',' });
DataRow toDelete = dtTelephoneNumbers.Rows.Find(new object[] { commandArgs[0], commandArgs[1] });
dtTelephoneNumbers.Rows.Remove(toDelete);
Debug.WriteLine("dtTelephoneNumbers count = " + dtTelephoneNumbers.Rows.Count);
if (dtTelephoneNumbers.Rows.Count == 0)
dtTelephoneNumbers.Rows.Clear();
Repeater1.DataSource = dtTelephoneNumbers;
Repeater1.DataBind();
}
}
役立つかもしれない追加のメモ: 私のデータテーブルは静的データテーブルです。そうしないと、ポストバックが発生したときにデータが失われます。
public static DataTable dtTelephoneNumbers = new DataTable();
そして、すべてが a 内にある a 内で発生UpdatePanel
しWizard Step
ます。
更新 1:データはローカルのみです (今のところ)。ウィザードを使用してユーザーからすべての情報を収集し、最終的にデータベースに追加します。
更新 2: UpdatePanel なしで使用すると問題なく動作します。:( UpdatePanel がこれと関係があるようです!