Ciao a tutti, sono l'ennesimo emigrante che sta passando a .NET e mi sta anche piacendo.
L'unica cosa che mi fa sclerare è che in asp3.0 trovavo tonnellate di esempi da studiare e quì, invece, trovo pochissimo e i libri che ho comprato danno solo un'antipasto dei concetti chiave della programmazione.
Così, dopo innumerevoli sforzi vengo a genuflettermi e a implorare aiuto.
Ho bisogno di annidiare 2 gridview:
- quella 'Master' si popola facendo una query su 'miaTabella' con un DISTINCT in base a 3 campi (boxWidth, boxLeght e nLayer)
- quella child fa una query sulla stessa tabella mostrando (senza DISTINCT stavolta) solo i record che hanno in comune i 3 suddetti campi con la riga della gridView 'Master' che la contiene.
Vorrei sapere se ho adottato il metodo giusto e, soprattutto, come mai nella 'Child' gridView non riesco a far funzionare l'Update (L'Insert lo devo ancora fare).
Non restituisce errori ma non aggiorna i contenuti dei campi nel db (e neppure a video quindi) coi nuovi valori inseriti nelle textBox in fase di editing.
Tutto sulla Master funziona con gli stessi principi: Insert, Update, Delete.
Sulla Child funziona solo il Delete![]()
Ecco il codice del TemplateFiled contenente la Child:
codice:<asp:TemplateField HeaderText="Configurazioni"> <ItemTemplate> <input id="HiddenBW" type="hidden" runat="server" value='<%# Eval("boxWidth") %>'/> <input id="HiddenBL" type="hidden" runat="server" value='<%# Eval("boxLEnght") %>'/> <input id="HiddenNL" type="hidden" runat="server" value='<%# Eval("nLayer") %>'/> <asp:GridView ID="gridViewConfigurations" DataSourceID="ConfigurationsSource" runat="server" CssClass="testomedio" Width="600px" AllowPaging="True" PageSize="25" AllowSorting="True" AutoGenerateColumns="False" EmptyDataText="No records found" DataKeyNames="IDcounter" OnSelectedIndexChanged="gridViewEvapco_SelectedIndexChanged" PagerSettings-Mode="NumericFirstLast" GridLines="None" Visible = "False"> <RowStyle CssClass="GridItem" /> <HeaderStyle CssClass="GridHeader" /> <AlternatingRowStyle CssClass="GridAltItem" /> <PagerStyle CssClass="GridPager" HorizontalAlign="Center" /> <Columns> <asp:TemplateField HeaderText="Qt." SortExpression="qty"> <ItemTemplate> <asp:Label ID="lblQty" Runat="Server"><%# Eval("qty") %></asp:Label> </ItemTemplate> <EditItemTemplate> <asp:TextBox ID="tbUpdateQty" runat="server" CssClass="userInput" Width="30px" Text='<%# Bind("qty") %>'></asp:TextBox> </EditItemTemplate> <FooterTemplate> <asp:TextBox ID="tbInsertQty" CssClass="userInput" Width="30px" Runat="server"></asp:TextBox> </FooterTemplate> <ItemStyle Width="50px" /> </asp:TemplateField> ...altri TemplateField con altri campi... <asp:TemplateField ShowHeader="False"> <ItemTemplate> <asp:LinkButton ID="btnEditConfigurations" runat="server" CausesValidation="False" CommandName="Edit" Text="Edit">[img]images/mod.gif[/img]</asp:LinkButton> <asp:LinkButton ID="btnDeleteConfigurations" runat="server" CausesValidation="False" CommandName="Delete" OnClientClick="return confirm('Confermi di voler cancellare questo record?')" Text="Delete">[img]images/canc.gif[/img]</asp:LinkButton> </ItemTemplate> <EditItemTemplate> <asp:LinkButton ID="btnSaveConfigurations" runat="server" CausesValidation="False" OnClientClick="return checkForm()" CommandName="Update" Text="Update">[img]images/disk.png[/img]</asp:LinkButton> <asp:LinkButton ID="btnCancelConfigurations" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel">[img]images/cross.png[/img]</asp:LinkButton> </EditItemTemplate> <FooterTemplate> <asp:LinkButton ID="btnSaveNewRecordConfigurations" runat="server" Text="Add" OnClick="btnSaveNewRecord_Click">[img]images/disk.png[/img]</asp:LinkButton> <asp:LinkButton ID="btnCancelNewRecordConfigurations" runat="server" Text="Cancel" OnClick="btnCancelNewRecord_Click">[img]images/cross.png[/img]</asp:LinkButton> </FooterTemplate> <ItemStyle Width="40px" /> </asp:TemplateField> </Columns> <PagerSettings Mode="NumericFirstLast" /> </asp:GridView> <asp:Button ID="btnAddChildRecord" CssClass="userButton" Runat="server" Text="Aggiungi configurazione" OnClick="btnAddChildRecord_Click" /> <asp:SqlDataSource ID="ConfigurationsSource" runat="server" ConnectionString='Provider=Microsoft.Jet.OLEDB.4.0;Data Source="mioPercorso/mioDatabase"' ProviderName="System.Data.OleDb" OldValuesParameterFormatString="original_{0}" SelectCommand="SELECT * FROM [Tabella] where ([boxWidth]=@boxWidth And [boxLenght]=@boxLenght And [nLayer]=@nLayer)" DeleteCommand="DELETE FROM [Tabella] WHERE ([IDcounter] = @IDcounter)" InsertCommand="INSERT INTO [Tabella] (qty, ...altriCampi...)VALUES(@qty, ...altriValori...)" UpdateCommand="UPDATE [Tabella] SET [qty] = @qty, ...altriCampi... where ([IDcounter] = @IDcounter)"> <InsertParameters> <asp:Parameter Name="qty" /> </InsertParameters> <SelectParameters> <asp:ControlParameter ControlID="HiddenBW" Name="boxWidth" PropertyName="Value" Type="String" /> <asp:ControlParameter ControlID="HiddenBL" Name="boxLenght" PropertyName="Value" Type="String" /> <asp:ControlParameter ControlID="HiddenNL" Name="nLayer" PropertyName="Value" Type="Int32" /> </SelectParameters> <UpdateParameters> <asp:Parameter Type="String" Name="qty"></asp:Parameter> </UpdateParameters> </asp:SqlDataSource> </ItemTemplate> <ItemStyle Width="660px" /> </asp:TemplateField>
Allego, per chiarezza, anche il codice funzionante del dataSource della Master:
codice:<asp:SqlDataSource ID="CodesSource" runat="server" ProviderName="System.Data.OleDb" ConnectionString='Provider=Microsoft.Jet.OLEDB.4.0;Data Source="mioPercorso\mioDatabase"' OldValuesParameterFormatString="original_{0}" SelectCommand="Select DISTINCT boxWidth, boxLenght, nLayer from [miaTabella] order by boxWidth, boxLenght, nLayer" UpdateCommand="Update [miaTabella] SET [boxWidth]=@boxWidth, [boxLenght]=@boxLenght, [nLayer]=@nLayer where ([boxWidth]=@original_boxWidth And [boxLenght]=@original_boxLenght And [nLayer]=@original_nLayer)" DeleteCommand="Delete from [miaTabella] where ([boxWidth]=@boxWidth And [boxLenght]=@boxLenght And [nLayer]=@nLayer)" InsertCommand="INSERT INTO [miaTabella] ([boxWidth],[boxLenght],[nLayer]) VALUES (@boxWidth,@boxLenght,@nLayer)"> <InsertParameters> <asp:Parameter Type="String" Name="boxWidth"></asp:Parameter> <asp:Parameter Type="String" Name="boxLenght"></asp:Parameter> <asp:Parameter Type="String" Name="nLayer"></asp:Parameter> </InsertParameters> </asp:SqlDataSource>
Preferirei un'approccio il meno programmatico possibile perchè a lavori ultimati dovrò passare il codice ad una persona che ne sa pochissimo di programmazione e si troverebbe molto meglio se dovessi spiegargli soltanto i principi di funzionamento dei controlli 'builtin' di asp.net
Grazie a tutti quelli che mi aiuteranno a sorpassare questo ostacolo che mi sta tenendo da 4 giorni incollato al monitor fino a notte fonda![]()

).
Rispondi quotando


