Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Asp.net controllo datagrid aiuto.
lunedì 02 novembre 2009 - 10.31
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
mauramo33
Profilo
| Newbie
12
messaggi | Data Invio:
lun 2 nov 2009 - 10:31
buongiorno a tutti,
prima di tutto mi devo scusare con tutti quanti voi prima di iniziare perche' forse le domande che sto per farvi sono di una banalità enorme .. ma sono alle prime armi .. e sto imparando adesso asp.net.
Inizio con il descrivervi cosa ho fatto in una pagina aspx.
Allora ci sono due componenti .. un textbox e un datagrid.
sono riuscito a fare il filtro dei dati nel mio datagrid attraverso il valore messo nel campo textbox utilizzando:
<FilterParameters>
<asp:ControlParameter ControlID="txtCerca" PropertyName="Text" />
</FilterParameters>
utilizzando questo comando sql:
SelectCommand="SELECT * FROM [tbl_aziende]"
FilterExpression="ragione_sociale like '%{0}%'"
e fin qui nessun problema. Ora pero' nella stessa riga del campo text box, vorrei creare una serie di link contententi le iniziali del campo ragione_sociale .. come se fosse una specie di rubrica, il cui link dovrebbe essere indirizzato alla stessa pagina aggiungendo come filtro oltre a quello esistente questo " and left(ragione_sociale,1) = '%{1}%'" e come parametro la lettera selezionata nell'elenco della rubrica.
come potrei fare ?...
Secondo quesito: si puo' personalizzare la colonna seleziona del datagrid con un tasto che mi rimanda ad una funzione passandogli l'id del record selezionato in una pagina nuova ? ..
grazie mille,
Maurizio
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
lun 2 nov 2009 - 14:07
>buongiorno a tutti,
ciao
>Inizio con il descrivervi cosa ho fatto in una pagina aspx.
>Allora ci sono due componenti .. un textbox e un datagrid.
e già questo potrebbe essere da cambiare
. se usi ASP.Net 2.0 usa GridView e lascia perdere DataGrid
>come potrei fare ?...
devi farti una TEMPLATECOLUMN se devi per forza usare un datagrid, mentre col GridView usa la templatefield:
http://msdn.microsoft.com/it-it/library/system.web.ui.webcontrols.templatefield%28VS.80%29.aspx
>Secondo quesito: si puo' personalizzare la colonna seleziona
>del datagrid con un tasto che mi rimanda ad una funzione passandogli
>l'id del record selezionato in una pagina nuova ? ..
fai tutto gratis con il gridview. Leggi qui per approfondire:
http://msdn.microsoft.com/it-it/library/system.web.ui.webcontrols.gridview%28VS.80%29.aspx
Puoi crearti una colonna comando con all'interno il pulsante al quale poi passerai il CommandArgument.
>grazie mille,
di nulla!
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
mauramo33
Profilo
| Newbie
12
messaggi | Data Invio:
mar 3 nov 2009 - 16:49
ciao,
ho seguito il tuo consiglio passando al GridView e devo dire che avevi ragione .. ora ho questo problema:
prima di tutto ho dovuto spostare il datasource del gridview lato codice perche' altrimenti non riuscivo a fare una seleziona composta nella query:
Dim Connessione As SqlConnection
Dim Cerca As SqlCommand
Connessione = New SqlConnection(ConfigurationManager.ConnectionStrings("dbDati").ToString)
Dim Str As String
Dim l As String = Request.QueryString("l")
Str = "SELECT *, tbl_comuni.Denominazione, tbl_comuni.Provincia FROM tbl_aziende INNER JOIN tbl_comuni ON tbl_aziende.cod_comune = tbl_comuni.CodComune "
If txtCerca.Text <> "" Then If InStr(Str, "Where") > 0 Then Str = Str + " and ragione_sociale like '%" & txtCerca.Text & "%' " Else Str = Str + " Where ragione_sociale like '%" & txtCerca.Text & "%' "
If l <> "" Then If InStr(Str, "Where") > 0 Then Str = Str + " and Left(ragione_sociale,1) = '" & l & "' " Else Str = Str + " Where Left(ragione_sociale,1) = '" & l & "' "
Connessione.Open()
Cerca = New SqlCommand(Str, Connessione)
elenco.DataSource = Cerca.ExecuteReader()
elenco.DataBind()
Connessione.Close()
l'elenco viene popolato bene senza problemi .. il punto e' che io avevo attivato l' il sorting = true nel componente ma credo che gestita la connessione via codice debba gestirne anche l'ordinamento. ho visto un po in giro ed ho provato un po di codice. solo che non sono riuscito ad uscirne fuori, per cui ti chiedo un'aiuto.
il mio gridview e' cosi:
<asp:GridView ID="elenco" runat="server" OnSelectedIndexChanged="elenco_SelectedIndexChanged" OnSorting="elenco_sorting"
AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="PartitaIVA" CellPadding="4" ForeColor="#333333" GridLines="None" Width="100%">
<RowStyle BackColor="#EFF3FB" />
<Columns>
<asp:CommandField ButtonType="Button" ShowSelectButton="True" SelectText=" » "/>
<asp:BoundField DataField="PartitaIVA" HeaderText="Partita Iva" />
<asp:BoundField DataField="ragione_sociale" HeaderText="Ragione Sociale" SortExpression="ragione_sociale" />
<asp:BoundField DataField="tipologia" HeaderText="Tipologia" />
<asp:BoundField DataField="indirizzo" HeaderText="Indirizzo" />
<asp:BoundField DataField="Denominazione" HeaderText="Comune" SortExpression="Denominazione" />
<asp:BoundField DataField="Provincia" HeaderText="Prov" SortExpression="Provincia" />
<asp:BoundField DataField="cap" HeaderText="cap" />
<asp:BoundField DataField="codiceFiscaleTitolare" HeaderText="codiceFiscaleTitolare" />
<asp:BoundField DataField="tipologia_attivita" HeaderText="Tipologia Attività" />
</Columns>
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<EditRowStyle BackColor="#2461BF" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>
questo e' il codice che sto provando e che sembra funzionare a tutti meno che a me:
Protected Sub elenco_Sorting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewSortEventArgs) Handles elenco.Sorting
Dim dataView As DataView = elenco.DataSource
dataView.Sort = (e.SortExpression & " ") + GetSortDirection(e.SortExpression)
elenco.DataSource = dataView
elenco.DataBind()
End Sub
Private Function GetSortDirection(ByVal sortBy As String) As String
Dim sortDir As String = " ASC"
If ViewState("sortBy") IsNot Nothing Then
Dim sortedBy As String = ViewState("sortBy").ToString()
If sortedBy = sortBy Then
'the direction should be desc
sortDir = " DESC"
'reset the sorter to null
ViewState("sortBy") = Nothing
Else
'this is the first sort for this row
'put it to the ViewState
ViewState("sortBy") = sortBy
End If
Else
'it's null, so this is the first sort
ViewState("sortBy") = sortBy
End If
Return (sortDir)
End Function
mi restituisce questo errore:
Errore server nell'applicazione '/studiomasi'.
--------------------------------------------------------------------------------
Impossibile eseguire il cast di oggetti di tipo 'System.Data.SqlClient.SqlDataReader' sul tipo 'System.Data.DataView'.
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.InvalidCastException: Impossibile eseguire il cast di oggetti di tipo 'System.Data.SqlClient.SqlDataReader' sul tipo 'System.Data.DataView'.
Errore nel codice sorgente:
Riga 33:
Riga 34: Protected Sub elenco_Sorting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewSortEventArgs) Handles elenco.Sorting
Riga 35: Dim dataView As DataView = elenco.DataSource
Riga 36:
Riga 37: dataView.Sort = (e.SortExpression & " ") + GetSortDirection(e.SortExpression)
Puoi aiutarmi ?
grazie mille ... in anticipo .. se passi per firenze poi ti offro una fiorentina ..
Maurizio
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mar 15 dic 2009 - 02:19
>Riga 35: Dim dataView As DataView = elenco.DataSource
>Puoi aiutarmi ?
secondo me l'errore è quando cerchi di mettere il datasource all'interno di un dataview, ma il data source è un data reader. Prova a fare in modo che il tuo datasource sia un dataset o un datatable.
>grazie mille ... in anticipo .. se passi per firenze poi ti offro una fiorentina ..
ah niente. Anzi scusa il ritardo della risposta.. e cmq sono amante della fiorentina, caschi male
--
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
Torna su
Stanze Forum
Elenco Threads
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 !