|
|
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 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:.
|
|
|
|
|
Componenti WinForms
Ultimo Post 07 mag 2010 10.34 by frank_lupo. 18 Risposte.
|
Ordina:
|
 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 |
|
|
|
| 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
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
Icone e Toolstrip |
 |
Icone della giusta dimensione e Toolstrip modificate a runtime |
 |
|
2009/06/28 | Autore: Sabrina Cosolo
|
|
|
|
|
|
|
|
|
|