2010-06-03 12 views
5

Esto es probablemente algo realmente estúpido sencilla ..lista desplegable con destino al objeto de origen de datos - la forma de actualizar en un botón de clic

que tienen una lista desplegable con destino a una fuente de datos de objeto en el suelo. He establecido AppendDataBoundItems en verdadero para que pueda tener una selección inicial.

<asp:DropDownList ID="Accommodations1" runat="server" AutoPostBack="true" DataTextField="AccommodationTypeDescription" DataValueField="Id" OnDataBound="Accommodations1_DataBound" onSelectedIndexChanged="Accommodations1_SelectedIndexChanged" Width="200px" DataSourceID="AccommodationDs" AppendDataBoundItems="true"> 
     <asp:ListItem Text="Select" Value=""></asp:ListItem> 
</asp:DropDownList> 

<asp:ObjectDataSource ID="AccommodationDs" runat="server" OldValuesParameterFormatString="original_{0}" SelectMethod="ListByPropertyId" TypeName="PropertyAccommodationController"> 
     <SelectParameters> 
      <asp:Parameter Name="PropertyId" Type="Int32" /> 
     </SelectParameters> 
</asp:ObjectDataSource> 

que tienen un botón que añade un accommodaton - así que después de eso sucede Necesito la lista desplegable para actualizar para incluir el nuevo alojamiento. Así que intenté llamar a databind en la lista desplegable y a la conexión de datos en el origen de datos, y nada hace que esta lista desplegable se actualice.

por ejemplo. PropertyAccommodations1.DataBind();

¿Podría alguien decirme por favor lo que estoy haciendo mal? Originalmente pensé que se debía a un problema del panel de actualización ... pero eliminé el panel de actualización y todavía no funciona (y verifiqué que la página maestra no incluye un panel de actualización).

Gracias!

+0

Eliminé los AppendDataItems true - y los datos de las llamadas se vinculan en la lista desplegable y se actualizan como se esperaba. ¿Cómo tengo una lista desplegable con un valor predeterminado "Seleccionar", sin tener estos problemas? – Jen

Respuesta

1

Gracias por las respuestas rápidas - han implementado

Accommodations1.Items.Insert(0,new ListItem("Select","")); 

como yo quería que específicamente en la parte superior :)

Todavía creo que sería mejor tener este elemento predeterminado en el origen de la página, pero que AppendDataItems me está tropezando.

+0

Necesita ser Insertar no Agregar – Colin

+0

@alejandrobog: No estoy de acuerdo con su afirmación. Jen ha agregado específicamente una línea de código diferente y la ha modificado para que sea la respuesta correcta. – fuzz

1

Puede subrcibe a DDL OnDataBound y añadir el "Seleccionar" del

Accommodations1.Items.Add(new ListItem("Select","")); 
+0

Gracias! Me imagino que esta será la forma en que voy, pero me hubiera gustado tener el elemento predeterminado en el origen de la página, y luego adjuntar los elementos, parecía una buena manera de hacerlo :) – Jen

+0

Puede haber problemas si estableces AppendDataBoundItems = "true", por ejemplo, si callbind enlaza de nuevo, tus elementos se duplicarán. – alejandrobog

1

En el clic de botón, después de llamar .DataBind() en el DDL, a continuación, puede hacer

Accommodations1.Items.Add(new ListItem("Select")); 
+0

Esperaba evitar tener que hacerlo en código, pero gracias :) Si tengo que hacerlo en el código, también tendré que agregarlo después del enlace inicial, ¿cuál es el mejor lugar para hacerlo? es decir. actualmente en la carga de la página configuré esto: AccommodationDs.SelectParameters ["propertyId"]. DefaultValue = ((int) Master.PropertyId) .ToString(); Cuál es el origen de datos al que está destinada la lista desplegable. No llamo específicamente a databind en la lista desplegable cuando la página se está cargando, entonces, ¿dónde pondría el complemento? ¿O debería estar llamando a la lista desplegable databind después de establecer el parámetro de selección de datasource? – Jen

Cuestiones relacionadas