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
Visualizzazione in tabella di record collegati
sabato 09 maggio 2009 - 14.49
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
squilibrio
Profilo
| Expert
527
messaggi | Data Invio:
sab 9 mag 2009 - 14:49
Ciao a tutti ho due tabelle (attività e tipo), collegate tra loro:
Activities
ID
Description
Type
ID
IDActivity
Description
Vorrei creare una pagina che mi visualizzi l'elenco delle attività (in una colonna) ed accanto le tipologie associate all'attività (in una seconda colonna)
esempio
prima riga
ActivityA typeA
typeB
second riga
ActivityB typeD
terza riga
ActivityC typeE
typeF
typeS
Accanto alla descrizione di ogni tipologia dovrei poi inserire un textbox .... quindi per dare all'utente la possibiltà di inserire un valore per ogni associazione del tipo Attività/Tipo ... e devo salvare questo valore inserito.... come mi consigliate di gestire/creare questa tabella a due livelli?
Grazie
mrub
Profilo
| Junior Member
51
messaggi | Data Invio:
sab 9 mag 2009 - 17:58
Activities
IDactivity
Description
IDtype
idActivity
Type
Description
Usa un griview (gridview1) per le attività utilizzando i template.
in una colonna inserisci:
- una label (IDactivityLabel) che "binda" ad IDactivity
- un altro gridview (gridview2) associato al datasource "SELECT IDtype,... WHERE idActivity=? utilizzando il controlparameter -> IDactivityLabel)
in un altra colonna (di gridview1) inserisci:
- una textbox (NuovaAttivitaTextBox) non associata ad alcun campo
- un linkButton(o imagebutton o button) con commandName="Select"
Ora all'evento selectedindexchanged di griview1:
- recuperi il valore della textbox con GridView1.SelectedRow.FindControl("NuovaAttivitaTextBox").text
- recuperi IDactivity ad es. con GridView1.SelectedDataKey.Value
- esegui una query di inserimento utilizzando i valori recuperati
- .....
Ciao.
squilibrio
Profilo
| Expert
527
messaggi | Data Invio:
sab 9 mag 2009 - 18:56
Grazie per l'aiuto e per la pronta risposta .... ho capito la logica da adottare ... purtroppo non saprei come implementarla impostando da zero la tua soluzione :-(
Potresti darmi qualche dritta?
Grazie
mrub
Profilo
| Junior Member
51
messaggi | Data Invio:
sab 9 mag 2009 - 19:22
usi visual studio?
squilibrio
Profilo
| Expert
527
messaggi | Data Invio:
dom 10 mag 2009 - 20:49
si!
mrub
Profilo
| Junior Member
51
messaggi | Data Invio:
lun 11 mag 2009 - 11:33
Puoi gestire il tutto in modo visuale.
Allora:
- inizia creando un gridview in modo visuale per le attività
- converti le colonne in templatecolumn
- vai nella colonna che contiene IDactivityLabel ed inserisci l'altro gridview il cui datasource conterrà la condizione idActivity=? dove ? sarà associato al controlparameter -> IDactivityLabel). Gridview e IDactivityLabel devono essere nella medesima colonna perchè in modo contenuti nello stesso contenitore)
l'inserimento di un nuovo recortd lo vediamo dopo .... :)
squilibrio
Profilo
| Expert
527
messaggi | Data Invio:
mar 12 mag 2009 - 00:12
Grazie per l'aiuto!!
Sono arrivato alla griglia funzionante con il template column
potresti aiutarmi a proseguire??? grazie mille!!!!
<asp:GridView ID="gvElenco" runat="server" AutoGenerateColumns="False"
Width="99%" ForeColor="#333333" Font-Names="Verdana" DataKeyNames="Id" DataSourceID="odsAttivita"
BorderColor="#999999" BorderStyle="None" BorderWidth="1px" ShowFooter="True"
AllowSorting="True" CellPadding="8" GridLines="Vertical">
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<EditRowStyle BackColor="#999999" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White"/>
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<Columns>
<asp:TemplateField HeaderText="Id" SortExpression="Id">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("Id") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Id") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Descrizione"
SortExpression="DescrizioneAttivita">
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%# Bind("DescrizioneAttivita") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="TextBox2" runat="server"
Text='<%# Bind("DescrizioneAttivita") %>'></asp:TextBox>
</EditItemTemplate>
<HeaderStyle HorizontalAlign="Left" />
<ItemStyle HorizontalAlign="Left" />
</asp:TemplateField>
</Columns>
<RowStyle Height="25px" BackColor="#EEEEEE" ForeColor="Black" />
<AlternatingRowStyle BackColor="#DCDCDC" />
<FooterStyle BackColor="#003366" ForeColor="Black" Height="1px" />
<PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#008A8C" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#003366" Font-Bold="True" Height="15px" ForeColor="White" />
</asp:GridView>
<asp:ObjectDataSource ID="odsAttivita"
DataObjectTypeName="Spaanjaars.ContactManager.BusinessEntities.Attivita"
runat="server"
DeleteMethod="Delete"
InsertMethod="Save"
SelectMethod="GetList"
TypeName="Spaanjaars.ContactManager.Bll.AttivitaManager"
UpdateMethod="Save"
EnablePaging="False"
SelectCountMethod="SelectCountForGetList">
</asp:ObjectDataSource>
mrub
Profilo
| Junior Member
51
messaggi | Data Invio:
mar 12 mag 2009 - 18:44
<ItemTemplate>
<asp:Label ID="IdLabel" runat="server" Text='<%# Bind("Id") %>'></asp:Label>
qui inserisci il gridview(2) dei tipi associato al datasource dei tipi dove inserisci il controlparameter IdLabel.text
</ItemTemplate>
mrub
Profilo
| Junior Member
51
messaggi | Data Invio:
mar 12 mag 2009 - 18:44
<ItemTemplate>
<asp:Label ID="IdLabel" runat="server" Text='<%# Bind("Id") %>'></asp:Label>
qui inserisci il gridview(2) dei tipi associato al datasource dei tipi dove inserisci il controlparameter IdLabel.text
</ItemTemplate>
squilibrio
Profilo
| Expert
527
messaggi | Data Invio:
mar 12 mag 2009 - 21:14
mmmm non ho ben capito sai... (colpa mia ovviamente)
alcuni dubbi)
1) cosa c'entra la "lbl" alla quale fai riferimento?
2) se inserisco in un nuovo grdiview nella cella (itemtemplate) ... come linko la riga (attività) ai record da visualizzare in ogni singolo gridview presente in ogni riga?
3) e per rendere modificabili i texbox? ... devo lavorare sull'edittemplate e non sull'item?
Potresti farmi un esempio completo di come dovrebbe essere "disegnato" il gridview e di come linko ogni riga (attività) con il dettaglio elementi collegati ad ogni singola attività (quindi il secondo gridview)?
Grazie
mrub
Profilo
| Junior Member
51
messaggi | Data Invio:
mer 13 mag 2009 - 10:49
se vuoi ti posso inviare un esempio con accessadatasource (domani)...
cmq quando crei in modo visuale un accessdatasource puoi inserire dei parametri nella clausaola where ...
basta, dopo aver selezionato "origine parametro"=control, selezionare "ControlID"=ID..Label
Per le textbox ...
se ti riferisci alle textbox per oggiornare i dati tramite datasource ovviamente devono essere contenuti nell'edititem
se ti riferisci alla textbox (non "bindata" ad alcun campo) per inserire tramite SQL da codice un nuovo tipo allora può tranquillamente stare nell'itemtemplate del gridview esterno.
squilibrio
Profilo
| Expert
527
messaggi | Data Invio:
mer 13 mag 2009 - 17:59
Se riesci ad inviarmi un esempio mi fai un grosso favore !!!
Grazie ancora
mrub
Profilo
| Junior Member
51
messaggi | Data Invio:
lun 18 mag 2009 - 20:58
Sono riuscito a trovare un po' di tempo solo ora... spero di esserti stato di aiuto :)
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="IDattivita" DataSourceID="AccessDataSource1" Width="600px" HeaderStyle-CssClass="etichettab" BorderColor="Transparent" BorderWidth="0px" CellSpacing="2" GridLines="None">
<Columns>
<asp:TemplateField InsertVisible="False">
<EditItemTemplate>
<asp:LinkButton ID="SalvaLinkButton" CommandName="Update" CausesValidation="True" tooltip="Salva" runat="server" CssClass="salva25"></asp:LinkButton>
<asp:LinkButton ID="AnnullaLinkButton" CommandName="Cancel" CausesValidation="False" tooltip="Annulla" runat="server" CssClass="annulla25"></asp:LinkButton>
</EditItemTemplate>
<ItemTemplate>
<asp:LinkButton ID="ModificaLinkButton" CommandName="Edit" CausesValidation="False" tooltip="Modifica" runat="server" CssClass="modifica25"></asp:LinkButton>
<asp:LinkButton ID="EliminaLinkButton" CommandName="Delete" CausesValidation="False" tooltip="Elimina" OnClientClick="return confirm('Sei sicuro?');" runat="server" CssClass="elimina25"></asp:LinkButton>
</ItemTemplate>
<ItemStyle Width="60px" CssClass="barrastrumenti" />
</asp:TemplateField>
<asp:BoundField DataField="IDattivita" HeaderText="ID" ReadOnly="True"
SortExpression="IDattivita">
</asp:BoundField>
<asp:TemplateField HeaderText="Attivita" >
<EditItemTemplate>
<asp:TextBox ID="ZonaTextBox" runat="server" Text='<%# Bind("Attivita") %>' MaxLength="50" ></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="AttivitaLabel" runat="server" Text='<%# Bind("Attivita") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Tipi" >
<EditItemTemplate>
<asp:Label ID="IDattivitaLabel1" runat="server" Text='<%# Bind("IDattivita") %>'></asp:Label>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="IDattivitaLabel1" runat="server" Text='<%# Bind("IDattivita") %>'></asp:Label>
<asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click">nuova attivita</asp:LinkButton>
<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" DataKeyNames="IDtipo"
DataSourceID="ADS_tipi">
<Columns>
<asp:BoundField DataField="IDtipo" HeaderText="IDtipo" InsertVisible="False" ReadOnly="True"
SortExpression="IDtipo" />
<asp:BoundField DataField="Tipo" HeaderText="Tipo" SortExpression="Tipo" />
<asp:BoundField DataField="idAttivita" HeaderText="idAttivita" SortExpression="idAttivita" />
</Columns>
</asp:GridView>
<asp:AccessDataSource ID="ADS_tipi" runat="server" DataFile="~/App_Data/charterdaysicily.mdb"
DeleteCommand="DELETE FROM [Tipi] WHERE [IDtipo] = ?" InsertCommand="INSERT INTO [Tipi] ([IDtipo], [Tipo], [idAttivita]) VALUES (?, ?, ?)"
SelectCommand="SELECT [IDtipo], [Tipo], [idAttivita] FROM [Tipi] WHERE ([idAttivita] = ?)"
UpdateCommand="UPDATE [Tipi] SET [Tipo] = ?, [idAttivita] = ? WHERE [IDtipo] = ?">
<DeleteParameters>
<asp:Parameter Name="IDtipo" Type="Int32" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="Tipo" Type="String" />
<asp:Parameter Name="idAttivita" Type="Int32" />
<asp:Parameter Name="IDtipo" Type="Int32" />
</UpdateParameters>
<SelectParameters>
<asp:ControlParameter ControlID="IDattivitaLabel1" Name="idAttivita" PropertyName="Text"
Type="Int32" />
</SelectParameters>
<InsertParameters>
<asp:Parameter Name="IDtipo" Type="Int32" />
<asp:Parameter Name="Tipo" Type="String" />
<asp:Parameter Name="idAttivita" Type="Int32" />
</InsertParameters>
</asp:AccessDataSource>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<HeaderStyle CssClass="tdheader1" Height="20px" />
<RowStyle CssClass="tdVal2" />
<AlternatingRowStyle CssClass="tdVal1" />
</asp:GridView>
</td>
</tr>
</table>
<br />
<asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/charterdaysicily.mdb"
SelectCommand="SELECT [IDattivita], [Attivita] FROM [attivita]" DeleteCommand="DELETE FROM [attivita] WHERE [IDattivita] = ?" InsertCommand="INSERT INTO [attivita] ([IDattivita], [Attivita]) VALUES (?, ?)" UpdateCommand="UPDATE [attivita] SET [Attivita] = ? WHERE [IDattivita] = ?">
<DeleteParameters>
<asp:Parameter Name="IDattivita" Type="Int32" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="Attivita" Type="String" />
<asp:Parameter Name="IDattivita" Type="Int32" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="IDattivita" Type="Int32" />
<asp:Parameter Name="Attivita" Type="String" />
</InsertParameters>
</asp:AccessDataSource>
Protected Sub LinkButton1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim mioidL As Label = sender.namingcontainer.FindControl("IDattivitaLabel1")
Dim mioidattivita As Integer = mioidL.Text
Dim miogridview As GridView = sender.namingcontainer.FindControl("GridView2")
nuovoattivita(mioidattivita, miogridview)
End Sub
Sub nuovoattivita(ByVal a_idattiivita As Integer, ByVal a_gridview As GridView)
miaconn.Open()
Dim miasql As String = "INSERT INTO [Tipi] ([idAttivita]) VALUES (?)"
Dim miocomando As New OleDbCommand(miasql, miaconn)
miocomando.Parameters.Add(New System.Data.OleDb.OleDbParameter("idAttivita", System.Data.OleDb.OleDbType.Integer, 0, "idAttivita"))
Try
miocomando.Parameters("idAttivita").Value = a_idattiivita
miocomando.ExecuteNonQuery()
miaconn.Close()
Me.tip.Text = "Per completare l'inserimento inserisci i dati e fai clic su salva. "
a_gridview.Sort("IDtipo", SortDirection.Descending)
a_gridview.DataBind()
a_gridview.EditIndex = 0
Catch exc As Exception
Me.tip.Text = "Inserimento non riuscito!!!" & exc.Message & "-" & exc.Source
miaconn.Close()
GridView1.DataBind()
End Try
End Sub
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 !