38 messaggi dal 10 novembre 2005
il problema è si che metto in editing la frase stessa,xò al click sul pulsante deve sparire il datagrid e comparire una texbox con un'alto pulsante. e nella taxtbox il testo da editare che è il testo della frase selezionata.le frasi vengono prese da un database in access.
fino a visualizzare tutto ok e mi sono fatto mettere anche una colonna(template column) di textbox con all'interno l'id della domanda.coai pansavo di poter prendere l'id come volevo...e invece mi sono incasinato con le query..ti poso il codice cosi forse sono + chiaro...è ipercommentato..

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Call leggirisposte1()

End Sub


Public Function leggirisposte1() As DataTable

'creo la connessione
Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Inetpub\wwwroot\riepilogo\db\questionario.mdb;")
'apro la connessione
conn.Open()
'creo il dataadapter x supporto al dataset
Dim oda As New OleDbDataAdapter("SELECT * FROM Risposte", conn)
'creo il dataset
Dim DS As New DataSet
'riempio il dataadapter
oda.Fill(DS, "Risposte")
'creo il visualizzatore
Dim objDataView As New DataView(DS.Tables("Risposte"))
'dichiaro come fonte x la griglia il visualizzatore
DataGrid1.DataSource = objDataView
'DS.Tables("Risposte").DefaultView
'esguo cosi visualizza fino alla fine
DataGrid1.DataBind()

conn.Close()
conn = Nothing


End Function
Public Function visualizzadomanda()
'creo la connessione
Dim conn1 As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Inetpub\wwwroot\riepilogo\db\questionario.mdb;")
conn1.Open()
'faccio la select
Dim sqlstrvis As New OleDbDataAdapter("SELECT Domanda FROM Risposte WHERE idrisposta=" + temp.text, conn1)
'txtdomanda.Text = sqlstrvis
Dim ds2 As New DataSet
sqlstrvis.Fill(ds2, "Risposte")

Dim objDataView As New DataView(ds2.Tables("Risposte"))
Dim str As String
str = Convert.ToString(objDataView)
'Response.Write(sqlstrvis.SelectCommand.CommandText)
txtdomanda.Text = str
'Response.Write(sqlstrvis)
'chiudo la connessione
'Response.End()
conn1.Close()
conn1 = Nothing

End Function


'quando si preme il pulsante aggiorna
Private Sub btnaggiorna_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnaggiorna.Click
'creo al connessione
Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Inetpub\wwwroot\riepilogo\db\questionario.mdb;")
'la apro
conn.Open()
'faccio l'update prendendo i dati dal form(l'id è ancora fisso xchè non so dove prenderlo
Dim cmd As New OleDbCommand
Dim da As New OleDbDataAdapter
da.UpdateCommand = cmd
da.UpdateCommand.CommandText = "UPDATE Risposte SET domanda ='" + txtdomanda.Text + "' WHERE idrisposta='" & Request.Form("temp")
' Dim sqlstrmod As String = "UPDATE Risposte SET domanda =" & Request.Form("txtdomanda") & " WHERE idrisposta=90"
'Dim cmd As New OleDbCommand(sqlstrmod, conn)
da.UpdateCommand.Connection = conn
da.UpdateCommand.ExecuteNonQuery()

'cmd.ExecuteNonQuery()

'Response.Write(sqlstrmod)
'Response.Write(Request.Form("txtdomanda"))
'Response.End()
'cambio le visibilità
pnlform.Visible = False
DataGrid1.Visible = True
conn.Close()
conn = Nothing
End Sub
'il datagrid 1 non si utilizza a causa dei bottoni
Private Sub DataGrid1_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.ItemCommand

If e.CommandName = "k" Then

pnlform.Visible = True
DataGrid1.Visible = False

Call visualizzadomanda()

If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then

Dim temp As TextBox = DirectCast(e.Item.FindControl("txtId"), TextBox)


End If
End If
End Sub
End Class

che ne dici di una bella entrata in scena del tipo prima spacco tutto e poi parliamo?
102 messaggi dal 11 maggio 2004
prova a fare:

Nell'itemcommand della datagrid,

...
' Recuperi l'ID
Dim temp As TextBox = DirectCast(e.Item.FindControl("txtId"), TextBox)

' salvi nel ViewState della pagina l'id:
ViewState(<tua key>) = temp.text
...


e poi nella query di upd usi quel valore:

....
da.UpdateCommand.CommandText = "UPDATE Risposte SET domanda ='" + txtdomanda.Text + "' WHERE idrisposta='" & ViewState(<tua key>).ToString()
....

Ricordati, mi raccomando, di resettare quel valore nel ViewState
ViewState.Remove(<tua key>) dopo che hai aggiornato il record.

Fammi sapere.

Ciao Antonello.
102 messaggi dal 11 maggio 2004
Mi è venuta un'altra idea...
prova a fare:

' Dichiari un riferimento a livello di pagina
Dim tempID As string

Nell'itemcommand della datagrid,

...
' Recuperi l'ID
tempID = DirectCast(e.Item.FindControl("txtId"), TextBox).Text

e poi nella query di upd usi quel valore:

....

da.UpdateCommand.CommandText = "UPDATE Risposte SET domanda ='" + txtdomanda.Text + "' WHERE idrisposta='" & tempID

....

Preferisco questa soluzione perchè non devi preoccuparti di svuotare il viewstate e non c'è pericolo che ti rimangano valori 'sporchi'.

Fammi sapere.

Ciao Antonello.
38 messaggi dal 10 novembre 2005
Dim tempID As string
dove lo dichiato?
posso usare lo stesso oggetto anche nella select?

che ne dici di una bella entrata in scena del tipo prima spacco tutto e poi parliamo?
38 messaggi dal 10 novembre 2005
no è solo xchè dato che sono un novellino sto cercando pure di capire il codice e non applicare righe di codice con grezzi copia-incolla...
scusa se forse pretendo un po troppo..

che ne dici di una bella entrata in scena del tipo prima spacco tutto e poi parliamo?
102 messaggi dal 11 maggio 2004
wolfborg ha scritto:
Dim tempID As string
dove lo dichiato?

nella pagina, dove ti pare, prima della dichiarazione dei controlli della pagina. Magari metti:

Private tempID As string.


posso usare lo stesso oggetto anche nella select?


Si.

Fammi sapere.
38 messaggi dal 10 novembre 2005
ok le stringhe se non altro non mi danno errore...l'unica cosa è che continua a non visualizzarmi nulla nella textbox...poi ti posso chiedere anchra un piccolo paricolare?all'inizio avevi usato il + x concatenare e ora la&...che differenze ci sono e quando usi una o l'altra?
grazie ancora...

che ne dici di una bella entrata in scena del tipo prima spacco tutto e poi parliamo?
102 messaggi dal 11 maggio 2004
wolfborg ha scritto:
ok le stringhe se non altro non mi danno errore...l'unica cosa è che continua a non visualizzarmi nulla nella textbox...


Call visualizzadomanda() va messo dopo la valorizzazione della variabile tempID. Quindi, qcosa del genere:

' Recuperi l'ID
tempID = DirectCast(e.Item.FindControl("txtId"), TextBox).Text
' Visualizzo il testo della domanda
Call visualizzadomanda()


poi ti posso chiedere anchra un piccolo paricolare?all'inizio avevi usato il + x concatenare e ora la&...che differenze ci sono e quando usi una o l'altra?
grazie ancora...


in vb per concatenare stringhe è meglio usare &


Ciao Antonello.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.