38 messaggi dal 10 novembre 2005
ciao a tutti
mi da un errore nelle query di select e di update se gli metto come parametro request.form("temp").temp è una textbox temporanea in cui risiede l'id che mi serve.ora posto le 2 query in questione
da.UpdateCommand.CommandText = "UPDATE Risposte SET domanda =" & Request.Form("txtdomanda") & " WHERE idrisposta=" & Request.Form("temp")


Dim sqlstrvis As New OleDbDataAdapter("SELECT Domanda FROM Risposte WHERE idrisposta="& request.form("temp"), conn1)

sembra che non lo riconosca xchè non legge dopo i doppi apici...
dove sbaglio?
x favore datemi una manina..

che ne dici di una bella entrata in scena del tipo prima spacco tutto e poi parliamo?
102 messaggi dal 11 maggio 2004
Scusa, ma che valore ti ritorna Request.Form(xxx)???

Il salvataggio lo devi fare in un postback della pagina differente da quello in cui imposti i valori della textbox temp???

Fammi sapere.

Ciao.
38 messaggi dal 10 novembre 2005
il request.form mi dovrebbe dare il contenuto della textbox..quindi l'id che mi serve..e tutto ciò che faccio si svolge in una pagina sola...coiè devo fare un esaercizio di visualizazione di frasi con a fianco un pulsante modifica.cliccando su modifica scompar la tabella e compare uan textbox con la frase desidetata e un altro pulsante.tu modifchi la frase e premi il pulsante.in questo modo ti ritorna la tabella con la frase modificata.ho fatto il daragrid e la visualizazione va tutto bene.ho fatto un'altra colonna di texbox con tutti gli id.quando premo modifica creo questa textbox temporanea con l'id all'interno(suppongo) solo ceh mi fa capricci con ste 2 query..ti posto il codice cosi forse capisci melgio cosa sono riuscito a fare fin ora..

aspx
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm2.aspx.vb" Inherits="riepilogo.WebForm2"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>WebForm2</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="Visual Basic .NET 7.1" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<%--il panel è come un div. l'id è obligatorio e il runat=server indica che deve essere pocessato%>
<%--lato server e non lato client anche se tutti i tag asp.net vengono processati lato server--%>
<%--vedere la proptietà visible--%>
<asp:panel id="pnlgriglia" Runat="server"></asp:panel>
<%--secondo panel x il form di modifica--%>
<asp:panel id="pnlform" Runat="server" Visible="False">
<asp:TextBox id="txtdomanda" Runat="server"></asp:TextBox>
<%--<asp:TextBox ID="temp" Runat="server"></asp:TextBox>--%>
<asp:Button id="btnaggiorna" Runat="server" Text="modifica"></asp:Button>
<%--datagrid di visualizazione dei dati--%>
</asp:panel><asp:datagrid id="DataGrid1" runat="server" AutoGenerateColumns="False" Visible="True" datakeyfield="idrisposta">
<Columns>
<asp:BoundColumn HeaderText="domanda" DataField="domanda"></asp:BoundColumn>
<asp:ButtonColumn Text="modifica" ButtonType="LinkButton" CommandName="k"></asp:ButtonColumn>
<asp:TemplateColumn HeaderText="ID">
<ItemTemplate>
<asp:TextBox runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "idrisposta") %>' ID="txtId" Width="40px"/>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>
<%--panel non utilizzato a causa dei bottoni che non funzionano..--%>
<asp:datagrid id="DataGrid2" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundColumn HeaderText="domanda" DataField="domanda"></asp:BoundColumn>
<asp:ButtonColumn HeaderText="Modifica" Text="MODIFICA" ButtonType="PushButton" CommandName="modifica"></asp:ButtonColumn>
</Columns>
</asp:datagrid></form>
</body>
</HTML>

aspx.vb

Imports System.Data.OleDb
Public Class WebForm2
Inherits System.Web.UI.Page

#Region " Codice generato da Progettazione Web Form "

'Chiamata richiesta da Progettazione Web Form.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

End Sub
Protected WithEvents DataGrid2 As System.Web.UI.WebControls.DataGrid
Protected WithEvents pnlgriglia As System.Web.UI.WebControls.Panel
Protected WithEvents pnlform As System.Web.UI.WebControls.Panel
Protected WithEvents txtdomanda As System.Web.UI.WebControls.TextBox
Protected WithEvents btnmodifica As System.Web.UI.WebControls.Button
Protected WithEvents btnaggiorna As System.Web.UI.WebControls.Button
Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid

'NOTA: la seguente dichiarazione è richiesta da Progettazione Web Form.
'Non spostarla o rimuoverla.
Private designerPlaceholderDeclaration As System.Object

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: questa chiamata al metodo è richiesta da Progettazione Web Form.
'Non modificarla nell'editor del codice.
InitializeComponent()
End Sub

#End Region

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=90", 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

'datagrid 2 è quello cio bottoni quindi è inutile lavorare qui dentro che tanto
'non funziona una emerita ciolla

'Private Sub DataGrid2_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid2.ItemCommand


' 'cambia al visibilità

' If e.CommandName = "modifica" Then
' Call visualizzadomanda()
' pnlform.Visible = True
' DataGrid2.Visible = False



' 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



'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 ='" & Request.Form("txtdomanda") & "' 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
'creo una seconda classe
Public Class risposta1
'proprietà dell'oggeto risposta
Private _domanda As String
'assegnazione delle caratteistiche della propietà
Public Property domanda() As String
'proprietà usata quando il codice viene eseguito
Get
'allora il testo verrà visualizzato maiuscolo(toupper)
Return _domanda.ToUpper()
End Get
'propietà di quando il codice viene assegnato
Set(ByVal Value As String)
_domanda = Value
End Set

End Property
Private _rispost As String
Public Property rispost() As String
Get
Return _rispost
End Get
Set(ByVal Value As String)
_rispost = Value
End Set
End Property
Public _ID As String
Public Property ID() As String
Get
Return _ID
End Get
Set(ByVal Value As String)
_ID = Value
End Set
End Property

End Class

appena puoi darci un'occhiatina...grazie 1000

che ne dici di una bella entrata in scena del tipo prima spacco tutto e poi parliamo?
102 messaggi dal 11 maggio 2004
Ciao
l'errore è qui
...
Request.Form("temp")
...

Temp è un riferimento di tipo textbox che usi accedere a "txtId"

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

ma Temp NON è presente sul form, quindi Request.Form("temp") non torna nulla!!!

Ciao Antonello
38 messaggi dal 10 novembre 2005
ma anche mettendolo come temp.text mi da errore..
come faccio a recuperare il valore li dentro?

che ne dici di una bella entrata in scena del tipo prima spacco tutto e poi parliamo?
102 messaggi dal 11 maggio 2004
Ciao
Il problema non è nel mettere Temp.Text piuttosto che Temp...
Il problema è che nella pagina aspx, quindi nell'html e non nel code-behind, non vi è nessun controllo con quel nome...
38 messaggi dal 10 novembre 2005
ok...xò io quella textbox la creo in memoria apposta x avere l'id a disposizione.se non posso recuperare il valore all'interno è totalmente inutile...o no...cioè siccome quel cavolo di id mi serve se no non posso identificare la riga del db da visualizzare e da modificare come posso recuperare quel valore?

che ne dici di una bella entrata in scena del tipo prima spacco tutto e poi parliamo?
102 messaggi dal 11 maggio 2004
Allora ...
facciamo un passo indietro ... per capire il contesto applicativo.

Tu hai una grid con un elenco di frasi, con a fianco un comando modifica. Clickando sul comando di modifica metti in editing la riga stessa. A questo punto, dopo aver modificato la frase premi sul tasto di conferma a fianco della textbox (nella riga della grid) per salvare il contenuto aggiornato della riga.

Se queso è il caso, allora..

sulla pressione del tasto di modifica metti in editing la riga, quindi dopo averla aggiornata intercetti la pressione sul tasto di conferma e salvi.

Esempio di datagrid.

<asp:datagrid id="DataGrid1" runat="server" AutoGenerateColumns="False" Visible="True">
<Columns>
<asp:BoundColumn DataField="IDRisposta" readonly="true" visible="false"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="Domanda">
<ItemTemplate>
<div><%# DataBinder.Eval(Container.DataItem, "domanda")%></div>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "domanda") %>' ID="txtDomanda" Width="40px"/>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<ItemTemplate>
<asp:Button id="btnModifica" runat="server" CommandName="Modifica"></asp:Button>
</ItemTemplate>
<EditItemTemplate>
<asp:Button id="btnConferma" runat="server" CommandName="Conferma"></asp:Button>
</EditItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>

Nel codebehind..

Private Sub DataGrid1_ItemCommand(ByVal source As System.Object, ByVal e As DataGridCommandEventArgs) Handles DataGrid1.ItemCommand
Select Case e.CommandName
Case "Modifica"
Me.DataGrid1.EditItemIndex = e.Item.ItemIndex
Case "Conferma"
Dim intID As Int32 = Int32.Parse(e.Item.Cells(0))
dim str as string = DirectCast(e.Item.FindControl("txtDomanda"), TextBox).text.trim()
....
e usi questi due dati da passare alla query di update.

End Select
End Sub

Fammi sapere.

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.