У меня есть данные повторителя ASP .NET, привязанные к DataTable.Все работает нормально, когда я могу добавить строки в DataTable & Bind()
, а Repeater будет изящно отображать вновь связанные данные и удалять из DataTable и Bind()
, а Repeater удалит данные.
Однако существует странная проблема, когда при удалении строк последняя стоящая строка, хотя и полностью удаляемая из таблицы данных, все равно будет отображаться на веб-странице.Это как если бы для последней строки Repeater не был привязан к данным!Но я поставил точки останова и проанализировал, что элемент определенно удаляется из DataTable, а также вызывается Repeater1.DataBound ().Если страница обновляется, последний элемент также удаляется (как и должно быть).
Я был так отчаянен, что сделал это.Я знаю, что это глупо, но все же заставляет Repeater сохранять последнюю строку при привязке данных.
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();
И все происходит внутри UpdatePanel
, который находится внутри Wizard Step
.
ОБНОВЛЕНИЕ 1: Данные только локальные (пока).Я собираю всю информацию от пользователя с помощью мастера и, наконец, добавляю ее в базу данных.
ОБНОВЛЕНИЕ 2: Работает просто отлично, когда используется без UpdatePanel.:( Похоже, UpdatePanel как-то связана с этим!