Aggiungere righe ala datagridview da codice

martedì 28 dicembre 2010 - 12.27
Tag Elenco Tags  C#  |  VB.NET

blackspidy14 Profilo | Junior Member

ciao a tutti!!!
volevo aggiungere delle righe al mio datagridview usando il seguente codice :
Try
DettagliDataGridView.ColumnCount = 3
DettagliDataGridView.Columns(1).Name = "Prodotto1"
DettagliDataGridView.Columns(2).Name = "Prodotto2"
DettagliDataGridView.Columns(5).Name = "Prodotto3"

Dim row As String() = New String() {Prodotto1TextBox.Text, Prodotto2TextBox.Text, Prodotto3TextBox.Text}
DettagliDataGridView.Rows.Add(row)
Catch ex As Exception
MsgBox(ex.ToString)
End Try
restituendo la seguente eccezzione :"Impossibile aggiungere righe a livello di codice all'insieme di righe di DataGridView in caso di associazione a dati del controllo."

dove sbaglio?

alx_81 Profilo | Guru

>ciao a tutti!!!
ciao

>restituendo la seguente eccezzione :"Impossibile aggiungere righe
>a livello di codice all'insieme di righe di DataGridView in caso
>di associazione a dati del controllo."
>dove sbaglio?
se il datagrid è già collegato ad un datasource (ad esempio un datatable risultante da una query) devi aggiungere la nuova riga nel datasource, e non nella griglia.

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

blackspidy14 Profilo | Junior Member


>se il datagrid è già collegato ad un datasource (ad esempio un
>datatable risultante da una query) devi aggiungere la nuova riga
>nel datasource, e non nella griglia.

O_O

si hai ragione la griglia è collegata ad ad un datasource filtrato da una query.
come dovrei fare ad aggiungere una righa? non ho capito . . .

alx_81 Profilo | Guru

>si hai ragione la griglia è collegata ad ad un datasource filtrato
>da una query.
>come dovrei fare ad aggiungere una righa? non ho capito . . .
come colleghi il risultato della query alla griglia? Cosa usi?

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

blackspidy14 Profilo | Junior Member

Uso linq to sql:
Dim var = From c In dataContext.myTable _
Where c.column1.StartsWith("a") _
Order By c.column1 Ascending _
Select c
BindingSource.DataSource = var

per ora ho risolto così:
Dim x As Integer = Me.DataGridView.Rows.Count - 1

Me.DataGridView.Rows(x).Cells(1).Value = textBox1.Text
Me.DataGridView.Rows(x).Cells(2).Value = textBox1.Text

però se conosci una soluzione migliore sono pronto te ne sarei grato.

alx_81 Profilo | Guru

>però se conosci una soluzione migliore sono pronto te ne sarei
>grato.
basta intervenire su var, che è dello stesso tipo di c, ovvero il tipo di myTable.
Potrebbe essere un datatable e quindi puoi semplicemente aggiungere righe ad esso.
Di che tipo è myTable?
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

blackspidy14 Profilo | Junior Member


>Di che tipo è myTable?

Public NotInheritable Class Table(Of TEntity As Class)
Inherits System.Object
Membro di System.Data.Linq
Riepilogo:
Represents a table for a particular type in the underlying database.

Parametri di tipo:
TEntity: The type of the data in the table.

alx_81 Profilo | Guru

>
ok, ma non hai fatto un datacontext tuo? ogni record della tua MyTable sarà di un tipo particolare.
Ad esempio, se mi faccio il datacontext anagrafiche, avrò la tabella utenti ed ogni record della utenti sarà un utente.
Per inserire un record sarà sufficiente fare un utente (usando la sua classe e costruendola) e poi aggiungerlo col metodo add dell'entità utenti. Non so se mi sono spiegato..

datacontext.myTable.add(entità)..
una cosa del genere, ma prima devi creare l'entità con le tue textbox..
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

blackspidy14 Profilo | Junior Member

>>
>ok, ma non hai fatto un datacontext tuo? ogni record della tua
>MyTable sarà di un tipo particolare.
>Ad esempio, se mi faccio il datacontext anagrafiche, avrò la
>tabella utenti ed ogni record della utenti sarà un utente.
>Per inserire un record sarà sufficiente fare un utente (usando
>la sua classe e costruendola) e poi aggiungerlo col metodo add
>dell'entità utenti. Non so se mi sono spiegato..
>
>datacontext.myTable.add(entità)..
>una cosa del genere, ma prima devi creare l'entità con le tue
>textbox..
>--

ti sei spiegato benissimo però uso il datacontext creo una nuova instanza e grazie ad un semplice with aggiungo entità.

non credo di essermi spiegato molto bene se ti interessa posso postare il codice che ho usato :
Dim newRow As New myDataContext.myDataContext
With newRow
.column1 = TextBox1.Text
.column2 = TextBox2.Text
.column3 = TextBox3.Text
.column4 = TextBox4.Text
End With
myDataContext.myDataContext.InsertOnSubmit(newRow)

dopo di che salvo e rieseguo la query

alx_81 Profilo | Guru

>dopo di che salvo e rieseguo la query
così mi piace

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5