Ricerca 
it-ITen-US
Registrazione
Accedi
In-Vesti Dotnetwork
IN-VESTI DNW!!!
Sono finalmente arrivate le nuovissime T-Shirt di DotNetWork!!! Con soli 15,00 € ci sosterrai nelle spese di gestione della Community e ti invieremo a casa una splendida maglietta.
Se vuoi contribuire al mantenimento di DotNetWork.it Vai sulla pagina Iscrizioni
Effettua il pagamento usando IWBank
Click per andare alla pagina di Iscrizione
Oppure un Bonifico bancario (le coordinate sono sulla pagina Iscrizioni), inviaci una mail a support@dotnetwork.it indicandoci la tua taglia e l'indirizzo di spedizione.  Non appena verificata la ricezione del pagamento provvederemo a spedirti la tua T-Shirt.  Le magliette sono disponibili nelle taglie S-M-L-XL-XXL (in caso di esaurimento di una delle taglie, indica quella di "Backup"). Grazie per IN-VESTIRTI con NOI!!!
.:DotNetWork Founders:.
    Stampa     


DotNetWork Forums
Componenti WinForms
Ultimo Post 07 mag 2010 10.34 by frank_lupo. 18 Risposte.
Stampa immediata
Ordina:
PrevPrev ProssimoProssimo
Non sei autorizzato ad inviare una risposta.
Autore Messaggi

Posts:10

--
03 mag 2010 12.25  
Salve a tutti,
dovrei creare un applicazione con una serie di componenti le solite toolbar, bootoni gantt, scheduler e così via.. in pratica una sorta di crm o cosa del genere con db e altro ancora...
Ho guardato in giro  e sono incappato in infragistics. Qualcuno di voi sa dirmi che ne pensa o è meglio un altra soluzione?

Ciao e grazie

Posts:662

--
03 mag 2010 12.52  
Io uso Janus e mi trovo molto bene. www.janusys.com (per adesso non hanno i componenti wpf).
HTH
Alberto.

Posts:811

--
03 mag 2010 13.06  
Io uso i componenti infragistics dal 2005 e sono in grado di fare con essi tutto quello che mi pare per windows, web e adesso anche WPF,
il componente per il Gantt che hai segnalato di avere la necessità di acquisire è stato incluso nell'ultimo aggiornamento standard ed è quindi parte di quanto da loro fornito.

Saluti
Sabrina

Sabrina

Posts:10

--
03 mag 2010 13.10  
Ho cominciato a vedere ma mi trovo in difficoltà con la grid e il suo datasource a parte la lentezza di generazione.. comuqneu potrebbe essere la scelta giusta seconte?

Posts:811

--
04 mag 2010 15.54  

La datasource di una datagrid può essere qualsiasi oggetto che implementa IList o IListsource, il datasource di Infragistics serve solo se hai bisogno di creare al volo una sorgente dati multibanda (tabelle relazionate) senza avere una vera sorgente dati a disposizione.

Se crei una Datatable da un datareader selezionando i dati da una tabella e la assegni alla datasource della grid hai fatto.

Ci sono poi l'evento InitializeLayout per formattare colonne, nasconderle/visualizzarle, aggiungere colonne al volo, e fare tutte le formattazioni per colonna

e l'evento InitializeRow che puoi usare per formattazioni data driven (Es. un icona diversa su ogni cella di una colonna in base ad un valore, colorare uno sfondo in base al contenuto, assegnare ad ogni cella un editor (combo, check, lista, numerico o altro) diverso in base al contenuto anche sulla stessa colonna.

e poi hai gli eventi AfterRowActivate per la gestione delle azioni relative alla riga correntemente attiva, e il BeforeRowDeactivated per i controlli di congruenza prima che il focus si sposti ad una nuova riga se fai una grid modificabile.

Ti consiglio di scaricare ed installare gli esempi forniti da infragistics e andare a guardarli, ci sono demo per tutti i controlli e per tutte le cose che con essi si possono fare.per le grid credo ci siano almeno un centinaio di esempi che trattano tutte le possibili funzionalità.

saluti

Sabrina

Sabrina

Posts:10

--
04 mag 2010 16.26  
Scusa se ti rompo, vorrei capire un cosa con la connessione al db..
Io sto facendo un applicazione che si basa su sqlserver, che ora è in esecuzioen sul mio pc ma poi sarà su altri server.
Io ho creato la struttura sul Database poi ho creato un DataSet che importa la definizioen delle mie tabelle con le relazioni e io uso quello.
1 domanda come faccio a cmbaire la connectionstring se viene salvata nei settings per l'applicazione? poi ho notatao che il dataset salva il nome del catalogo nelle query di select,insert e update è una cosa un pò sciocca. Scusa ma sto da poco lavorando con c# ho sempre lavorato con Java ma mi tocca anche questo.. sto sbagliando? quale è la soluzione migliore? scusa se aggiungo se volessi utilizzare un altro db è la stessa cosa?

Grazie buon lavoro

Posts:811

--
04 mag 2010 16.57  

Se come presumo hai usato il wizard per produrre il tuo datasource purtroppo come tutti i wizard fa le magie...

Io non li uso mai, mentre Alberto lo fa quindi per il catalogo forse può aiutarti lui.

Per la stringa di connessione, se viene memorizzata sui settings applicativi non puoi cambiarla programmaticamente se non con alcune apposite librerie perché i settings applicativi sono memorizzati sulla cartella di installazione e alla microsoft assumano che qualunque sistemista sappia modificare a manina un file xml quindi non è previsto un modo semplice per permetterne la modifica da un applicazione.

Pertanto il file che di solito credo si chiami app.config ove sono memorizzati i setting applicativi del software potrà essere modificato a manina per cambiare la connection string del programma.
(questo è uno dei motivi per cui per i setting applicativi e i setting utente io ho delle classi personalizzate)

Per la gestione dell'aggiornamento dati su DB io ho costruito un generatore di codice C# usando CodeDom, per creare le classi come va bene a me. Purtroppo il Wizard ha alcuni limiti fondamentali, soprattutto per chi è abituato a governare i dati e non a essere governato da essi

Sabrina

Posts:10

--
04 mag 2010 17.09  
Cioè ti scrivi a mano i DataTable e altro giusto... partendo dalla connessione che presumo tu tenga sempre aperta per tutta l'esecuzioen del programma.. o sto sbagliando?

Posts:10

--
05 mag 2010 09.45  
ok risolto il discorso della connection string in maniera elegante..
http://stackoverflow.com/questions/63546/vs2005-c-programmatically-change-connection-string-contained-in-app-config

ora mi rimane il problema che il wizard mi memorizza il catalogo nelle configurazioni chi ne sa qualcosa?

Grazie a tutti

Posts:811

--
05 mag 2010 11.14  

Io scrivo a mano la classe di gestione della datatable (o meglio ho scritto a mano il codice che la genera dalle informazioni lette sul DB e da alcune informazioni parametriche che fornisco io)

La connection string viene settata su una classe static che la rende visibile a tutta l'applicazione, le connessioni vengono aperte e chiuse solo quando serve automaticamente dal DataAdapter che gestisce la classe dati.
O quando necessario dal datareader che fa una query specifica.

Non si tengono connessioni perennemente aperte in .NET!!!!!!!!

(ho messo un numero sufficiente di punti esclamativi?)

saluti

Sabrina

Posts:811

--
05 mag 2010 11.20  
Per il catalogo,
Presumo che il wizard te lo scriva nelle query, pertanto dipende da come hai chiesto che ti faccia tali query.
Se usi le query al volo, le stringhe sql sono nel code behind creato dal wizard e puoi modificarle a manina.
Se usi le Stored procedure, devi andare nel database usando SQL management studio e devi aggiornarle a manina sul DB

ciao
Sabrina

Posts:10

--
05 mag 2010 11.42  
Inserito da Sabrina (DNW TEAM) su 05 mag 2010 12.14

Io scrivo a mano la classe di gestione della datatable (o meglio ho scritto a mano il codice che la genera dalle informazioni lette sul DB e da alcune informazioni parametriche che fornisco io)

La connection string viene settata su una classe static che la rende visibile a tutta l'applicazione, le connessioni vengono aperte e chiuse solo quando serve automaticamente dal DataAdapter che gestisce la classe dati.
O quando necessario dal datareader che fa una query specifica.

Non si tengono connessioni perennemente aperte in .NET!!!!!!!!

(ho messo un numero sufficiente di punti esclamativi?)

saluti


ok se uso il dataset la connessione me la apre e chiudo lui?
scusa ma vogli ocapire bene..

Posts:10

--
05 mag 2010 11.45  
Inserito da Sabrina (DNW TEAM) su 05 mag 2010 12.20
Per il catalogo,
Presumo che il wizard te lo scriva nelle query, pertanto dipende da come hai chiesto che ti faccia tali query.
Se usi le query al volo, le stringhe sql sono nel code behind creato dal wizard e puoi modificarle a manina.
Se usi le Stored procedure, devi andare nel database usando SQL management studio e devi aggiornarle a manina sul DB

ciao

il problema sta in update,delete e insert..
un'altra cosa.. ma è possibile non usare sql con ADO.Net con ado normale (VB6) si apriva il record set e si poteva fare tutto senza sql.. per intenderchi e possibile aprire una tabella e scorrere i dati con un ciclo o impostare dei filtri?
grazie

Posts:811

--
05 mag 2010 20.28  
Per rispondere ai tuoi quesiti, non ti basta un dataset, il dataset è solo un contenitore che sta sul lato codice.
Per costruire qualcosa che modifica un database come minimo hai bisogno di
0) 1 SqlConnection dove metterai la connection string
1) 4 SqlCommand (Insert, Delete, Update, Select)
2) 1 SqlDataadapter a cui assegnare i 4 command e la connection
3) 1 Dataset
4) 1 Datatable mappata sulla tabella sql

fatto tutto questo, hai una classe dati che ti permette di supportare la modifica a database.

Questa ovviamente è solo la base, se vuoi avventurarti in territori ove i wizard sono ancor più sofisticati puoi provare con l'entity framework.

Al contrario di ADO pre .Net la versione .NET di ADO è solamente una struttura, il lavoro è tutto nelle mani del programmatore, ecco perché sono nati vari framework che forniscono servizi dati, perché per fare quello che in VB6 si faceva con una riga di codice, in .NET ne servono alcune centinaia.
Ecco perché io ho costruito un generatore di codice per creare i miei Data provider, che non fanno altro che fornire quello che ti ho listato qui sopra.
La generazione delle classi dati per la gestione database è una operazione non solo dispendiosa, di più!!!!!

saluti

Sabrina

Posts:10

--
06 mag 2010 09.36  
Inserito da Sabrina (DNW TEAM) su 05 mag 2010 21.28
Per rispondere ai tuoi quesiti, non ti basta un dataset, il dataset è solo un contenitore che sta sul lato codice.
Per costruire qualcosa che modifica un database come minimo hai bisogno di
0) 1 SqlConnection dove metterai la connection string
1) 4 SqlCommand (Insert, Delete, Update, Select)
2) 1 SqlDataadapter a cui assegnare i 4 command e la connection
3) 1 Dataset
4) 1 Datatable mappata sulla tabella sql

fatto tutto questo, hai una classe dati che ti permette di supportare la modifica a database.

Questa ovviamente è solo la base, se vuoi avventurarti in territori ove i wizard sono ancor più sofisticati puoi provare con l'entity framework.

Al contrario di ADO pre .Net la versione .NET di ADO è solamente una struttura, il lavoro è tutto nelle mani del programmatore, ecco perché sono nati vari framework che forniscono servizi dati, perché per fare quello che in VB6 si faceva con una riga di codice, in .NET ne servono alcune centinaia.
Ecco perché io ho costruito un generatore di codice per creare i miei Data provider, che non fanno altro che fornire quello che ti ho listato qui sopra.
La generazione delle classi dati per la gestione database è una operazione non solo dispendiosa, di più!!!!!

saluti

Ok tutto chiaro e sto leggendo sempre di più, ma se io creo con il wizard il dataset aggiungendo le tabelle es. da sqlserver ho notatao che lui crea come dicevi le clasis necessarie.
Per l'uso di questo dataset come si può fare?

Grazie

Posts:811

--
06 mag 2010 16.08  
Cosa significa cosa si può fare per l'uso del dataset?

Una volta che il wizard ti ha creato le classi, le hai a disposizione verifica solo in che namespace te le ha inserite, presumo tu possa instanziare nella tua form o classe una classe del tipo creato dal wizard.

Dim MyDataset as new WizardGeneratedDataset

o qualcosa di simile addirittura credo che generi un componente che puoi trascinare direttamente sulla form.

saluti
Sabrina

Posts:10

--
06 mag 2010 18.14  
Inserito da Sabrina (DNW TEAM) su 06 mag 2010 17.08
Cosa significa cosa si può fare per l'uso del dataset?

Una volta che il wizard ti ha creato le classi, le hai a disposizione verifica solo in che namespace te le ha inserite, presumo tu possa instanziare nella tua form o classe una classe del tipo creato dal wizard.

Dim MyDataset as new WizardGeneratedDataset

o qualcosa di simile addirittura credo che generi un componente che puoi trascinare direttamente sulla form.

saluti

mi sono spiegato male..
ho capito uso il TableAdapter dentrol al dataset e faccio tutto..
problemino.. come faccio dopo l'inserimento ad avere il valore dell'id colonna autoincrementate?

ciao grazie

Posts:811

--
07 mag 2010 10.13  
Aaah adesso ho capito Se la Update del tuo adapter non ti fornisce l'ID del campo Identity della PK è sbagliato l'SQL usato Questa è una stored procedure standard corretta: ALTER PROCEDURE [dbo].[SpConnectorTsInsert] ( @IDConnectorTs int , @IDAzienda nchar(3) = NULL , @Contesto nvarchar(15) = NULL , @TipoAzione nvarchar(15) = NULL , @Attivato bit = NULL , @InElaborazioneConnector bit = NULL , @ElaboratoDaConnector bit = NULL , @ElaboratoDaChiamante bit = NULL , @ConnectorError bit = NULL , @DataTs datetime = NULL , @IDProdMov int = NULL ) AS BEGIN SET NOCOUNT ON; INSERT INTO dbo.[TbConnectorTs] ( [IDAzienda] , [Contesto] , [TipoAzione] , [Attivato] , [InElaborazioneConnector] , [ElaboratoDaConnector] , [ElaboratoDaChiamante] , [ConnectorError] , [DataTs] , [IDProdMov] ) VALUES ( @IDAzienda , @Contesto , @TipoAzione , @Attivato , @InElaborazioneConnector , @ElaboratoDaConnector , @ElaboratoDaChiamante , @ConnectorError , @DataTs , @IDProdMov ); SELECT [IDConnectorTs] , LTRIM(RTRIM([IDAzienda])) as [IDAzienda] , [Contesto] , [TipoAzione] , [Attivato] , [InElaborazioneConnector] , [ElaboratoDaConnector] , [ElaboratoDaChiamante] , [LastUpdated] , [ConnectorError] , [DataTs] , [IDProdMov] FROM dbo.[TbConnectorTs] WHERE [IDConnectorTs] = @@IDENTITY Con questo tipo di SP se tu inserisci la riga da codice con qualcosa di simile a questo: MyTableadapter è la classe di gestione della tabella MyDatatable è la datatable “ID” è il campo con il contatore automatico DataRow row = MyDatatable.NewRow(); row[“Campo1”] = valore1 row[“campo2”] = valore2 MyDatatable.Rows.Add(row); MytableAdapter.Update(); Ora row[“ID”] contiene il valore della chiave inserita. spero di esserti stata utile saluti
Sabrina

Posts:10

--
07 mag 2010 10.34  
Risolto in altro modo.. non so il perchè ma funziona..
cambiato da OleDbConnection a SqlConnection.. e tutto funziona..
Comunque io ho creato il DataSet con il wizard perchè non voglio
toccarlo se devo rigeneralo basta che trascino le tabelle dalla parte server al dataset e tutto è sempre aggiornato...
Per l'utilizzo instanzio DataSet poi TableAdapert eseguo Fill e aggiungo Row, Update del Dataset in Tableadapter e tutto funziona.
E' quello giusto?
Il mio pensiero è che se esistono strumenti di generazione si dovrebbero utilizzare quelli...
Che dici?

Ciao e grazie
Non sei autorizzato ad inviare una risposta.

Active Forums 4.1
       
Articoli
Codedom Introduzione all'uso parte3
La classe Helper per le funzionalità CodeDom
2009/11/07 | Autore: Sabna Cosolo
Lavorare con gli Array
Il problema dello zaino
2007/07/29 | Autore: Alberto De Luca
Stampare Una DatagridView
Come utilizzare gli oggetti di stampa forniti dal framework per stampare il contenuto di una DatagridView con l'ausilio della GDI+
2008/12/07 | Autore: Andrea Zingoni
Fritto Misto - Classi di uso comune (Parte 6)
Helper: Alcuni metodi per organizzarci nell'uso del file System
2007/10/28 | Autore: Sabrina Cosolo
Icone e Toolstrip
Icone della giusta dimensione e Toolstrip modificate a runtime
2009/06/28 | Autore: Sabrina Cosolo
ADO.Net Nozioni di base (parte 1)
Una libreria helper base per usare comandi diretti in SQL Server
2008/03/09 | Autore: Sabrina Cosolo
Panoramica del Sistema dei Comandi
Come iniziare a capire com'è fatto WPF (parte 5)
2007/09/30 | Autore: Patrizia Cosolo
Miniguida alla OOP con il .NET Framework- Parte I
Come prendere per mano un tipico programmatore VB6
2008/07/27 | Autore: Alberto De Luca
    Stampa     
Home|Forums|Blogs|Mappa del sito
© 2007-2010 by DotNetWork  .:.  Condizioni d'uso  .:.  Privacy  .:.  Accedi  .:.