2009-09-04 1 views
0

Я неоднократно сталкивался с этой проблемой и не знаю, что вызывает ее. Я получаю исключение в DataBind:SelectedValue, который недействителен, поскольку он не существует в списке элементов.

"SelectedValue which is invalid because it does not exist in the list of items" 

Вот некоторые важные части информации:

  1. Я перезагружать listOrgs периодически, когда исходные данные изменились.
  2. Вызов Organization.DTListAll возвращает около 500 строк Int, String.
  3. Есть нет дубликата или нулевых значений в возвращенных данных
  4. После первых двух строк ниже, listOrgs.Items.Count равно 0, и выбранное значение равно 0
  5. Выбранного значения, когда операция выполняется в DataBind значение, которое не находится в множестве значений ID возвращено

listOrgs.Items.Clear(); 
listOrgs.SelectedValue = "0"; 
listOrgs.DataSource = new Organization().DTListAll(SiteID); 
listOrgs.DataTextField = "OrganizationName"; 
listOrgs.DataValueField = "OrganizationID"; 
listOrgs.DataBind(); 

ответ

0

Проверка для существующего значения

this.DropDownList1.Items.Clear(); 
    //--dont use this: 
    //this.DropDownList1.SelectedValue = "0"; 
    DataTable dt = new DataTable(); 
    dt.Columns.Add("x", typeof(System.Int32)); 
    dt.Columns.Add("xs", typeof(System.String)); 
    for (int x = 0; x < 100; x++) 
    { 
     DataRow dr = dt.NewRow(); 
     dr["x"] = x; 
     dr["xs"] = x.ToString(); 
     dt.Rows.Add(dr); 
    } 
    DropDownList1.DataValueField = "x"; 
    DropDownList1.DataSource = dt; 
    DropDownList1.DataBind(); 
    // check for existing value: 
    int valueToCheck = 99; // last item 
    if (this.DropDownList1.Items.FindByValue(valueToCheck.ToString()) != null) 
    { 
     this.DropDownList1.SelectedValue = valueToCheck.ToString(); 
    } 

Кроме того - вы можете попытаться установить DataText и DataValue поля, прежде чем связать (AFAIK, что это производительность ++)

 Смежные вопросы

  • Нет связанных вопросов^_^