Leggere una Dropdownlist per INSERT

mercoledì 24 settembre 2003 - 16.13

Nicola Profilo | Senior Member

Errore di compilazione
Descrizione: Errore durante la compilazione di una risorsa necessaria per soddisfare la richiesta. Rivedere i dettagli relativi all'errore e modificare in modo appropriato il codice sorgente.

Messaggio di errore del compilatore: BC30456: 'selecteditem' non è un membro di 'System.Data.DataSet'.

Errore nel codice sorgente:

Riga 247: cmdInsert = New SqlCommand( strInsert, conn )
Riga 248: 'Lettura delle DDL
Riga 249: IDTelefono=ddlCell.selecteditem.value
Riga 250: cmdInsert.Parameters.Add( "@cellulare", IDTelefono)
Riga 251:


Sto facendo un insert all'interno di un DB,
il tutto attraverso un datagrid in cui in fondo aggiungo
un record "nuovo" composto da 2 dropdownlist (caricano i dati dinamici da db)
attraverso un dataset come faccio a leggere le DDL? NONcon il selectitem... ma con??

grazie!!!!

Nicola Profilo | Senior Member

Ciao Coach!
ti ringrazio!

ecco quanto:

Dim ddlAppCell As DropDownlist
ddlAppCell = DataGrid1.findcontrol("ddlCell")

>>>>ma ddlCell è l'id della mia DDL

ma nell'insert??

strInsert="INSERT INTO Reperibilita([ID_Telefono]) values ( '" & ddlAppCell & "');"

mi da l'errore seguente:
BC30452: L'operatore '&' non è definito per i tipi 'String' e 'System.Web.UI.WebControls.DropDownList'.

gRAZIE ANCORA!!!!!!

Nicola Profilo | Senior Member

mi da il seguente errore...

Dettagli eccezione: System.NullReferenceException: Riferimento a un oggetto non impostato su un'istanza di oggetto.

Errore nel codice sorgente:


Riga 260: '" where ID_Grep = @ID_Grep "
Riga 261:
Riga 262: strInsert="INSERT INTO Reperibilita([Giorno],[ID_Gruppo],[ID_Telefono]) values ( '" & calendar1.selecteddate.tostring("dd/MM/yyyy") & "', '" & sID_Gruppo & "', '" & ddlAppCell.selecteditem.text & "');"
Riga 263:
Riga 264: 'response.write (strInsert)

Nicola Profilo | Senior Member

la DDL è la seguente


<asp:DropDownList runat="server" id="lstCellInsert"
DataValueField="ID_Telefono" DataTextField="CellReperibile"
DataSource='<%# GetCell() %>' />


grazie Coach

ciao Nicola

Nicola Profilo | Senior Member

la DDL lo cambiata in lstCellInsert,
ho provato anche con il ciclo For ma il risultato è sempre lo stesso:

riferimento a un oggetto non impostato su un istanza di oggetto!

mi sai dire qualcosa???

grazieee!

nicola

Nicola Profilo | Senior Member

Non hai piu' niente da consigliarmi!!!
le ho provate tutte!!!

grazie per l'aiuto

ciao Nicola

Nicola Profilo | Senior Member

code:

Sub dgRep_Insert(sender as Object, e As DataGridCommandEventArgs)
If e.CommandName = "Insert" then

Dim strInsert As String
Dim cmdInsert As SqlCommand

'+++++++++++++Controllo DDL++++++++++++++++++++++++
Dim ddlAppCell As DropDownlist
ddlAppCell = DataGrid1.findcontrol("lstCellInsert")

'Ho provato anche il ciclo sulla collection, ma il risultato di errore è uguale identico
'Dim x As Integer
'For x = 0 to DataGrid1.items.count -1
'ddlAppCell = Datagrid1.items(x).FindControl("lstCellInsert")
'+++++++++++++Controllo DDL++++++++++++++++++++++++

strInsert="INSERT INTO Reperibilita([ID_Telefono]) values ( '" & ddlAppCell.selecteditem.value & "');"

'response.write (strInsert)

cmdInsert = New SqlCommand( strInsert, conn )

conn.Open()
cmdINsert.ExecuteNonQuery()
conn.Close()

Response.Write("<b>Insert Ok</b>")

Calendar1_SelectionChanged(sender,e)

End If

'Next

End If

End Sub


html:


<asp:TemplateColumn HeaderText="&lt;b&gt; N&#176; Telefono Cellulare">

<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "Cell") %>
</ItemTemplate>

<EditItemTemplate>
<asp:DropDownList runat="server" id="lstCell"
DataValueField="ID_Telefono" DataTextField="CellReperibile"
DataSource='<%# GetCell() %>'
SelectedIndex='<%# GetSelectedCell(Container.DataItem("ID_Telefono")) %>' />
</EditItemTemplate>

<FooterTemplate>
<asp:DropDownList runat="server" id="lstCellInsert"
DataValueField="ID_Telefono" DataTextField="CellReperibile"
DataSource='<%# GetCell() %>' />
</FooterTemplate>

</asp:TemplateColumn>


<asp:TemplateColumn>

<FooterTemplate>
<asp:Button CommandName="Insert" Text="Insert" runat="server" />
</FooterTemplate>

</asp:TemplateColumn>

Nicola Profilo | Senior Member

ok! provo questa soluzione! prima?? che codice??

a dopo...

grazie

Nicola Profilo | Senior Member

ho fatto in questo modo all'interno della Sub dgRep_Insert:

Dim ddlAppCell As DropDownlist
ddlAppCell = DataGrid1.items(DataGrid1.EditItemIndex).FindControl("lstCellInsert")

errore:

Errore server nell'applicazione '/'.
--------------------------------------------------------------------------------

Index non compreso nell'intervallo. Richiesto valore non negativo e minore della dimensione dell'insieme. Nome parametro: index
Descrizione: Eccezione non gestita durante l'esecuzione della richiesta Web corrente. Per ulteriori informazioni sull'errore e sul suo punto di origine nel codice, vedere l'analisi dello stack.

Dettagli eccezione: System.ArgumentOutOfRangeException: Index non compreso nell'intervallo. Richiesto valore non negativo e minore della dimensione dell'insieme. Nome parametro: index

Errore nel codice sorgente:


Riga 232: '+++++++++++++Controllo DDL++++++++++++++++++++++++
Riga 233: Dim ddlAppCell As DropDownlist
Riga 234: ddlAppCell = DataGrid1.items(DataGrid1.EditItemIndex).FindControl("lstCellInsert")
Riga 235:
Riga 236: 'ddlAppCell = DataGrid1.findcontrol("lstCellInsert")



Nicola Profilo | Senior Member

ma l'evento edit non centra con l'insert,
edit mi mette in modalità il datagrid con le DDL per poter fare l'update del record,
PER L'INSERT invece ho l'ultimo record sempre in vista con le DDL caricate:

'++++++++++++++++++++++++++++++++++++++++++++++++++

'DDL Numero Cellulare
Function GetCell() as DataSet

Dim strDDLCell as string
strDDLCell="SELECT ID_Telefono, Numero+ ' - ' + Descrizione AS CellReperibile FROM Telefoni ORDER BY Descrizione;"

Dim myDataAdapter as SqlDataAdapter = New _
SqlDataAdapter(strDDLCell, conn)

myDataAdapter.Fill(ddlCell, "CellRep")

Return ddlCell

End Function

Function GetSelectedCell(CID as String) as Integer

Dim iLoop as Integer
Dim dt as DataTable = ddlCell.Tables("CellRep")
For iLoop = 0 to dt.Rows.Count - 1
If Int32.Parse(CID) = Int32.Parse(dt.Rows(iLoop)("ID_Telefono")) then
Return iLoop
End If
Next iLoop

End Function

'++++++++++++++++++++++++++++++++++++++++++++++++
e poi con il bottone
<asp:Button CommandName="Insert" Text="Insert" runat="server" />

effettuo l'insert nel db

Nicola Profilo | Senior Member

ok! scusa se t faccio arrabbiare! ti tengo ancora aggiornato?

Nicola Profilo | Senior Member

Ciao... no..., la DDL per l'INSERT non sta nell' EditItemTemplate, come vedi dal code del messaggio inviato in precedenza, la DDL con id=lstCellInsert sta in un <FooterTemplate>; è la DDL che mi serve per l'update id=lstCell che sta nell' EditItemTemplate....

sono disperato....

grazie coach

Nicola Profilo | Senior Member

Ho provato anche con i parametri... identico risultato!



Sub dgRep_Insert(sender as Object, e As DataGridCommandEventArgs)
If e.CommandName = "Insert" then

Dim strInsert As String
Dim cmdInsert As SqlCommand

'+++++++++++++Controllo DDL++++++++++++++++++++++++
Dim ddlAppCell As DropDownlist
Dim idcell As String
ddlAppCell = DataGrid1.FindControl("lstCellInsert")


'+++++++++++++Controllo DDL++++++++++++++++++++++++


strInsert="INSERT INTO Reperibilita([ID_Telefono]) values(@ID_Cellulare);"

'response.write (strInsert)

cmdInsert = New SqlCommand( strInsert, conn )

idcell=ddlAppCell.selecteditem.value
cmdInsert.Parameters.Add( "@ID_Cellulare", idcell)


conn.Open()
cmdINsert.ExecuteNonQuery()
conn.Close()

Nicola Profilo | Senior Member

Fatto!!!
cavoli che sudata!!!!ù
si faceva cosi'......

Dim ddlAppCell As DropDownList = e.Item.FindControl("lstCellInsert")

grazie Coach!!!!

Nicola Profilo | Senior Member

Scusa!

adesso ho tre check box ne dg:
'controllo voce sempre a 1
dim voce as integer = 1
dim sms as integer = 0
dim email as integer = 0

if cboxvoce.checked then
voce=1
end if
if cboxsms.checked then
sms=1
end if
if cboxemail.checked then
email=1
end if


strInsert="INSERT INTO Reperibilita([Voce]) values ( '" & voce & "');"


id della check box è cboxvoce

mi dice che non è dichiarata.......
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5