2011-03-12 64 views
6

Estoy agregando las filas que el usuario selecciona en la cuadrícula "Elementos encontrados" (lado izquierdo de la captura de pantalla) a la cuadrícula "Artículos seleccionados" (lado derecho de la captura de pantalla) cada vez que el usuario hace clic en el botón "Agregar al carro".Obtener las Filas seleccionadas de un DataGridView

La captura de pantalla: link http://img856.imageshack.us/img856/3015/datagridview.jpg.

El botón Buscar trae la lista de libros del servicio de búsqueda. que se muestra en itemsFoundList que es DataGridView.

private void searchButton_Click(object sender, EventArgs e) 
{ 
    itemsFoundList.Columns.Clear(); 
    string[] list = searchServiceClient.BookSearch (getBookName.Text, getAuthorName.Text); 
    itemsFoundList.Columns.Add ("Items", "Items found:"); 
    displayToGrid (itemsFoundList, list); 
} 

Ahora no obtengo cómo agregar las filas seleccionadas a cartList (que es un DataGridView).

private void addToCart_Click(object sender, EventArgs e) { 
    //I am not getting what to write here. 
} 
+0

¿Tienes el control de searchServiceClient? ¿O es un servicio mantenido por un tercero? –

+0

Sí, es solo mi servicio. – ivorykoder

+0

¿Es seguro asumir que probablemente tenga un BookID u otro identificador único que podría devolver además de la información que está devolviendo ahora? –

Respuesta

19

En primer lugar, en que probablemente querrá cambiar la SelectionMode de su DataGridView a FullRowSelect. De lo contrario, los usuarios probablemente seleccionarán celdas y no filas y el código siguiente no funcionaría. [Aunque se podría hacer algo similar con las celdas seleccionadas]

Entonces querrá empezar con un código similar al siguiente:

foreach (DataGridViewRow r in dataGridView1.SelectedRows) 
{ 
    //Code to add selected row to new datagrid. 
    //Important to note that dataGridView2.Rows.Add(r) will not work 
    //because each row can only belong to one data grid. You'll have 
    //to create a new Row with the same info for an exact copy 
} 

Personalmente me gustaría devolver el BookID como una columna oculta de modo que termine estando disponible para cuando está procesando el carro del usuario.

Si desea mover los elementos de un DataGridViewRow al otro [para que solo puedan existir en una lista a la vez] puede hacerlo.

foreach (DataGridViewRow r in dataGridView1.SelectedRows) 
{ 
    dataGridView1.Rows.Remove(r); 
    dataGridView2.Rows.Add(r); 
} 
+0

"Primero, probablemente querrás cambiar el SelectionMode de tu DataGridView a FullRowSelect". - Me alegró el día. :-) – ivorykoder

+0

Ha, ese fue un pequeño error divertido, espero que esto haya funcionado para ti. –

Cuestiones relacionadas