Estoy tratando de usar un ObjectDataSource para múltiples DropDownList, pero no todos están en un ContentPlaceHolder. Entonces el código se está compilando correctamente pero obtengo esta excepción:

An exception of type 'System.Web.HttpException' occurred in System.Web.dll but was not handled in user code

Additional information: The DataSourceID of 'DROPDOWNLIST_NAME' must be the ID of a control of type IDataSource.  A control with ID 'OBJECTDATASOURCE_NAME' could not be found.

Obviamente, no pude moverlos todos a un solo lugar y tampoco voy a duplicar ObjectDataSource.

0
user438233 15 dic. 2016 a las 19:23

2 respuestas

La mejor respuesta

Debe usar un formato especial para DataSourceID de su control en otro ContentPlaceHolder (en mi caso, el DropDownList que no está en el mismo ContentPlaceHolder de ObjectDataSource).

Supongamos que ContentPlaceHolder que tiene ObjectDataSource es CPH y el ID de ObjectDataSource es OBJDS , entonces DataSourceId de su control de vinculación debería ser así:

DataSourceId = "CPH $ OBJDS"

1
user438233user438233 15 dic. 2016 a las 16:23

Sugeriría no usar ObjectDataSource y completar los controles de la lista desplegable manualmente. Para que pueda dividir la lógica empresarial y la interfaz de usuario. P.ej:

public void GetItems(ListControl list, bool emptyElement)
{
     if (list == null)
        return;

     list.Items.Clear();

     if (emptyElement)
        list.Items.Add(new ListItem("Select", ""));

     IList<MyClass> foos = Controller.LoadRecords();
     foreach (MyClass foo in foos)
     {
         ListItem item = new ListItem(foo.Description, foo.Id.ToString());
         list.Items.Add(item);
     }
}

Llamado usando

Manager.GetItems(myDropDownList, true);
0
Emanuele 16 dic. 2016 a las 09:55