Obrigado felipcm!!
Eu já tinha tentado com o Not Pagepostback, e também não dava!!
Mas realmente faltava colocar o datagrid na session para estar sempre disponivel, e não voltar a fazer a fill!!
Mas agora estou com outro problema, depois de inserir mais encomendas, quero adicionar à base de dados, e dá-me um erro:
System.InvalidOperationException: Update requires a valid InsertCommand when passed DataRow collection with new rows.
O codigo que estou a usar é:
Dim conexao As String = ConfigurationSettings.AppSettings("conexaowhite")
Dim sql As String = "Select * FROM Encomendas "
Dim conn As New System.Data.SqlClient.SqlConnection(conexao)
Dim da As New System.Data.SqlClient.SqlDataAdapter(sql, conn)
Dim ds As DataSet
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Not IsPostBack Then
ds = New DataSet
conn.Open()
da.Fill(ds, "dados")
conn.Close()
Session("dsRetorno") = ds
Else
ds = CType(Session("dsRetorno"), DataSet)
End If
dg_encomendas.DataSource = ds.Tables("dados").DefaultView
dg_encomendas.DataBind()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'adiciona encomenda ao dataset
'Dim arrValues(2) As Object
'arrValues(0) = TextBox1.Text
'arrValues(1) = TextBox2.Text
'arrValues(2) = TextBox3.Text
'ds.Tables("dados").Rows.Add(arrValues)
Dim dtrow As DataRow = ds.Tables("Dados").NewRow()
dtrow("EncomendaID") = TextBox1.Text
dtrow("ClienteID") = TextBox2.Text
dtrow("DataEncomenda") = TextBox3.Text
ds.Tables("dados").Rows.Add(dtrow)
Session("dsRetorno") = ds
dg_encomendas.DataBind()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Session("dsRetorno") = ds
conn.Open()
da.Update(ds, "dados")
conn.Close()
End Sub
Eu pensava que era por causa da tabela ter uma key, mas eu fui lá, desactivei a Key e obtive o mesmo erro
Mas estou com outra duvida, imaginando que dava certo, como é que eu depois inseria produtos nessa encomenda que eu adiciono?
Se calhar é agarrando o encomendaid com que essa encomenda foi adicionada e fazer um add de encomenda_details com o mesmo id... Mas não sei se dará certo!
Estou a abusar da tua paciencia...
Mas super obrigado pelas dicas que me foste dando, têm sido uma grande ajuda.
No final eu post aqui o codigo todo, porque deve haver mais gente interessada e eu não consegui encontrar na net nenhum script que faça isto em vb.net
1 abraço,
Max