При обратной передаче состояние представления повторно применяется + вы сказали, что пытаетесь загрузить значения снова. Я бы посоветовал разрешить viewstate нести весь вес при обратной передаче. Загружайте значения только при первом обращении к странице, добавляя if (! IsPostBack), например,
using (DataView dv = dtProductGroup.DefaultView)
{
if (! IsPostBack) {
dv.ApplyDefaultSort = false;
dv.Sort = "KVIGroupName ASC";
ddlGroup.ClearSelection();
ddlGroup.Items.Clear();
string strAll = Localization.GetResourceValue("_strddlStatusLBAll");
ddlGroup.DataValueField = "KVIGroupId";
ddlGroup.DataTextField = "KVIGroupName";
ddlGroup.DataSource = dv;
ddlGroup.DataBind();
ListItem item = new ListItem(strAll, "0");
ddlGroup.Items.Insert(0, item);
}
}
Edit:
Кроме того, ваш синтаксис гарантирует, что объект DataView, на который ссылается dv, удаляется при выходе из блока кода. Мое второе предположение - это побочный эффект, вызывающий проблему.
using (DataView dv = dtProductGroup.DefaultView)
{
Вместо этого исключите использование и напишите обычное объявление, как показано ниже (DataView будет утилизирован вместе со всем остальным, когда страница будет выполнена, поэтому на самом деле нет необходимости делать это самостоятельно).
DataView dv = dtProductGroup.DefaultView;
Подробную информацию см. В документации MSDN об «использовании» и IDisposable .