Pregunta

Si tengo dos cuadros de lista, con un botón entre ellos, ¿cómo puedo actualizar los elementos de ListBox2 si los artículos son de ListBox2 enlace de datos?

<asp:ListBox runat="server" ID="ListBox1" DataSourceID="DataSource1"
     DataTextField="Name" DataValueField="ID" SelectionMode="Multiple" />

<asp:Button runat="server" ID="addButton" onClick="addButton_Click" />

<asp:ListBox runat="server" ID="ListBox2" DataSourceID="DataSource2"
     DataTextField="Name" DataValueField="ID" SelectionMode="Multiple" />

Además, si utilizo el SelectionMode = "múltiple", tendrá que ser capaz de actualizar el origen de datos utilizando un UpdateCommand que toma un elemento a la vez?

EDIT:

Ok, añadir algunas aclaraciones:

  • Ambos Listboxes son DataBound a los datos únicos (SqlDataSource).
  • Quiero añadir artículos de ListBox1 a ListBox2 y viceversa, cuando un usuario hace clic en un botón.
  • Quiero ser capaz de agregar varios elementos al cuadro de lista (suponer que la selección múltiple está encendido)
  • Quiero que para activar una UpdateCommand en el origen de datos.

Hasta ahora, la única manera de que soy capaz de lograr esto es a través de cada elemento de forma manual desde el primer cuadro de lista y agregarlo como un parámetro para UpdateCommand del origen de datos y de forma manual llamar al método SqlDataSource.Update (). Esto funciona, pero eso significa que yo sea necesario para pasar una cadena delimitada por varias selecciones o abrir conexiones múltiples. Lo que estoy buscando es una manera de actualizar el origen de datos en el cuadro de lista y una vez que esté completamente actualizada, a continuación, llamar al bind / Actualización y persiste la parte trasera de datos a la base de datos.

¿Fue útil?

Solución

La primera pregunta es son los elementos que desee añadir que están fuera de la fuente de datos estática o dinámica Binded. Si usted tiene un par de elementos que desea añadir que siempre será el mismo, como una opción "Ninguno", entonces se puede añadir en su ASP como ListItem y establezca la propiedad AppendToDataSource en True.

Si desea insertar dinámicamente los valores junto con los valores de enlace de datos, entonces se puede establecer su valor de origen de datos a una función de C # y no ajustar su DataSourceID. Se vería así.

<asp:ListBox runat="server" ID="ListBox2" DataSource='<%# myFunc() %>'
 DataTextField="Name" DataValueField="ID" SelectionMode="Multiple" />

A continuación, en su C # CodeFile tener

    protected ListItem[] myFunc()
        {
          ListItem[] retVals;

          //write your code here to get your data from DataSource2 and whatever other sources you need

          //then create a ListItem for each row of data you want to show, 
          //set the text and the value attributes and return an array of all the values in the order you want

          return retVals;    
         }

Esto le permitirá mantener cualquier funcionalidad llamada DataBind puede que ya han desarrollado ya que esta función se llamará cada vez que el método DataBind del objeto se llama.

Otros consejos

Añadir un controlador de eventos para el evento DataBound de ListBox2. Que activará después de los datos de SQL se ata y se le dará la oportunidad de añadir datos adicionales.

no es importante que su cuadro de lista enganchan a un DataContext o no se debe utilizar

ListBox1.Items.Add(/*your listBox Item*/);// for example if you have a person listbox you should have - ListBox1.Items.Add(new Person(1,"Nasser","Hajloo");

Sólo recuerde que usted debe agregar elementos después de la unión me refiero

ListBox1.DataSource = myDBList;
ListBox1.DataBind();
//some other code 
ListBox1.Items.Add(new Person(1,"Nasser","Hajloo");
ListBox1.DataBind();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top