Ver Mensaje Individual
  #7 (permalink)  
Antiguo 11/09/2007, 01:32
Avatar de zacktagnan
zacktagnan
 
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años, 8 meses
Puntos: 3
Re: Valor inicial indicativo en un menú desplegable

* Nueva versión del mismo problema *

Si ahora al menú desplegable (DDL_contactosClie) al que quiero ponerle el elemento inicial es uno que se carga a través de un SqlDataSource que recibe un ControlParameter de otro menú desplegable (DDL_clientes), ¿cómo podría entonces ponerle al (DDL_contactosClie) ese elemento inicial?

Código:
<asp:DropDownList ID="DDL_clientes" runat="server" DataSourceID="SqlDs_clientesCCRep"
DataTextField="clie_nom" DataValueField="clie_id" SelectedValue='<%# Bind("avis_clieid") %>' AutoPostBack="True" OnSelectedIndexChanged="DDL_clientes_SelectedIndexChanged" AppendDataBoundItems="True" CssClass="ecograscomponentdata_seleccClientes">
   <asp:ListItem Value="0">---------------------</asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDs_clientesCCRep" runat="server" ConnectionString="<%$ ConnectionStrings:ecogras_conexion %>"
SelectCommand="spSelec_Clientes" SelectCommandType="StoredProcedure"></asp:SqlDataSource>

...

<asp:DropDownList ID="DDL_contactosClie" runat="server" DataSourceID="SqlDs_contactosClie"
DataTextField="contcli_nom_apell" DataValueField="contcli_nom_apell" AutoPostBack="True" OnSelectedIndexChanged="DDL_contactosClie_SelectedIndexChanged" OnLoad="DDL_contactosClie_Load" AppendDataBoundItems="True">
   <asp:ListItem Selected="True">** Sin contactos **</asp:ListItem>
</asp:DropDownList>
 <asp:SqlDataSource ID="SqlDs_contactosClie" runat="server" ConnectionString="<%$ ConnectionStrings:ecogras_conexion %>"
 SelectCommand="spSelec_ContactosXClie" SelectCommandType="StoredProcedure" OnLoad="SqlDs_contactosClie_Load">
   <SelectParameters>
      <asp:ControlParameter Name="clie_id" ControlID="DDL_clientes" propertyname="SelectedValue" />
      <asp:Parameter DefaultValue="0" Direction="InputOutput" Name="totContactClie" Type="Int32" />
   </SelectParameters>
</asp:SqlDataSource>
Según el código que he puesto, en el menú DDL_contactosClie lleva la propiedad AppendDataBoundItems="True", la cuál permite poner ese valor inicial (aquí "** Sin contactos **") y funciona bien si no se cambia de cliente en el menú DDL_clientes. Pero si cambio de cliente, al tener habilitada la mencionada propiedad no me actualiza del todo los registros del menú DDL_contactosClie sino que me añade los contactos del cliente ahora seleccionado a los del anterior.

He probado a quitar esa propiedad del AppendDataBoundItems y <asp:ListItem... del HTML y añadir dinámicamente desde la parte de código el elemento inicial de la siguiente forma ...

Código:
        DropDownList _DDL_contactosClie = DV_avisoCCRep.FindControl("DDL_contactosClie") as DropDownList;
        _DDL_contactosClie.Items.Insert(0, new ListItem("** Sin contactos **", "0"));
... pero no me hace caso porque, creo, como ya he dicho el SqlDataSource se carga a través del ControlParameter mencionado.

En principio, he probado esto último en los Load de la Página, del propio menú, pero nada...

Espero alguien me dé una reseña para solucionarlo u otra forma de conseguir lo mismo...
__________________
Saludos,

zacktagnan.
=================================================