* 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...