|
Programmazione & Co.
|
|
Mercoledì 01 Febbraio 2012 11:30 |
|
LINQ è uno dei tanti ottimi strumenti messi a disposizione dal .NET Framework.
In sostanza permette di interrogare diversi tipi di oggetti con una sintassi simile a quella dell'SQL.
Oggi lo useremo per estrapolare dati da un file XML.
Il file im questione è fatto così:
<?xml version="1.0" encoding="utf-8" ?>
<persons>
<person id="maggiorenne">
<nome>FRANCO</nome>
<cognome>FRANCHI</cognome>
</person>
<person id="minorenne">
<nome>ALESSIO</nome>
<cognome>ALESSI</cognome>
</person>
<person id="maggiorenne">
<nome>MATTEO</nome>
<cognome>MATTEI</cognome>
</person>
<person id="maggiorenne">
<nome>PINO</nome>
<cognome>PINI</cognome>
</person>
</persons>
Un semplice file che rappresenta delle persone con nom e cognome.
Ho aggiunto anche un attributo che useremo nel secondo esempio.
|
|
Ultimo aggiornamento Mercoledì 01 Febbraio 2012 14:39 |
|
|
Programmazione & Co.
|
|
Mercoledì 18 Gennaio 2012 11:47 |
|
In un altro articolo abbiamo visto come esportare una DataGridView in formato TXT.
Ora vediamo come esportarla in formato Excel, sicuramente più comodo da visualizzare rispetto al TXT.
Prima di tutto nel nostro progetto dobbiamo aggiungere una referenza.
Cliccate col tasto destro sul progetto -> Aggiungi riferimento -> .NET -> Microsoft.Interop.Excel
A qusto punto ho aggiunto un Item nel menu con questo evento:
private void saveXLSToolStripMenuItem_Click(object sender, EventArgs e)
{
DialogSalvaXls dlg = new DialogSalvaXls();
dlg.dialog(dataGridViewEntrate);
}
Non faccio altro che lanciare un SaveFileDialog e passargli la DataGridView da esportare.
Per il SaveFileDialog potete guardare qua.
|
|
Ultimo aggiornamento Mercoledì 18 Gennaio 2012 12:03 |
|
Programmazione & Co.
|
|
Mercoledì 11 Gennaio 2012 10:47 |
|
Mnetre stampare una JTable in Java è piuttosto semplice, stampare una DataGridView in C# non è così immediato.
Prima di tutto nel Windows Form aggiungete un oggetto PrintDocument.
Ve lo ritroverete in basso; selezionatelo e nelle proprietà impostate il DocumentName e tra gli eventi impostate l'evento PrintPage.
L'evento sarà una cosa del genere:
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Bitmap bm = new Bitmap(this.dataGridViewEntrate.Width, this.dataGridViewEntrate.Height);
Rectangle rc = new Rectangle(0, 0, this.dataGridViewEntrate.Width, this.dataGridViewEntrate.Height);
dataGridViewEntrate.DrawToBitmap(bm, rc);
e.Graphics.DrawImage(bm, 0, 0);
}
In pratica definiamo l'area da stampare e trasformiano la DataGridView in una Bitmap.
Per fare le cose per bene aggiungiamo anche un oggetto PrintDialog e nelle proprietà impostiamo Document impostando printDocument1....(controllate anche le opzioni che sono interessanti).
|
|
Ultimo aggiornamento Mercoledì 11 Gennaio 2012 11:01 |
|
Programmazione & Co.
|
|
Martedì 03 Gennaio 2012 19:55 |
|
Il controllo DataGridView è molto usato quando si vogliono mostrare i dati in forma tabellare.
E' molto comune riempirlo da database.
Se volessimo poi esportare il contenuto corrente senza eseguire altre query?
Io ho impostato il tutto per esportarlo sotto forma di string.
|
|
Ultimo aggiornamento Mercoledì 11 Gennaio 2012 10:47 |
|
Programmazione & Co.
|
|
Venerdì 30 Dicembre 2011 09:51 |
|
.NET Framework mette a disposizione il dialog SaveFileDialog per salvare i file.
Vediamo come implementarlo in C# in un WindowsForm.
Nel nostro form principale avremo una voce di menu alla quale sarà associata un'azione del genere:
private void saveItem_Click(object sender, EventArgs e)
{
try
{
DialogSalvaTxt ds = new DialogSalvaTxt();
ds.dialog("TESTO DA SALVARE");
}
catch (IOException ex)
{
MessageBox.Show(ex.Message);
}
}
DialogSalvaTxt è la classe preposta alla creazione del SaveFileDialog; viene anche richiamato un metodo che vuola una string come parametro.
|
|
Ultimo aggiornamento Venerdì 30 Dicembre 2011 10:10 |
|
Programmazione & Co.
|
|
Sabato 24 Dicembre 2011 19:56 |
|
Nel mio programmino avevo la necessità di chiudere un Form usando il tasto ESC.
Quindi, allo scatenarsi di un evento nel Form principale si apre un Form secondario per svolgere alcune operazioni.
Questo Form si deve potere chiudere con ESC.
Dobbiamo fare qualche operazione.
Prima di tutto andate nelle sue proprietà e impostate la proprietà KeyPreview su true.
A questo punto in avvio di form dobbiamo assicurarci che abbia il focus.
Quindi questo sarà il suo costruttore:
public FormUpdate()
{
InitializeComponent(); // METODO IMPOSTATO DA VISUAL STUDIO
// EVENTUALI ALTRE OPERAZIONI
this.Focus(); // ALLA FINE SETTIAMO IL FOCUS SUL FORM
}
|
|
Ultimo aggiornamento Sabato 24 Dicembre 2011 20:11 |
|
Programmazione & Co.
|
|
Domenica 04 Dicembre 2011 10:33 |
|
Mi stavo creando una interfaccia su misura per NMap che fosse multipiattoforma.
Mi è venuto in mente di usare Monodevelop e C# visto che Java non è molto adatto alla scopo.
Crea una GUI per NMap in sostanza vuol dire lanciare il comando che faresti direttamente da shell e rappresentare il risultato nella finestra.
Vediamo quindi come eseguire, in generale, comandi DOS/Bash o altri simili direttamente da codice.
Il codice qua sotto funziona sia su Linux che su Windows (su Mac OS X non ho ancoa provato).
|
|
Ultimo aggiornamento Domenica 04 Dicembre 2011 10:56 |
|
Programmazione & Co.
|
|
Giovedì 13 Ottobre 2011 15:22 |
|
Piccola guida su come inviare email in C#, anche se la libreria è molto facile da usare e non richiede particolare studio.
Sul mio sito in Asp.NET Web Form ho messo una tabella da riempire; al click sul bottone mi viene spedita una mail.
La tabella è questa:
<h2>
<asp:Label ID="LblMessage" runat="server" Text=""></asp:Label></h2>
<asp:Table ID="TableContact" runat="server">
<asp:TableRow>
<asp:TableCell>
<asp:Label ID="Label1" runat="server" Text="Nome"></asp:Label>
</asp:TableCell>
<asp:TableCell>
<asp:TextBox ID="TxtNome" runat="server"></asp:TextBox>
</asp:TableCell>
<asp:TableCell>
<asp:RequiredFieldValidator ID="RequiredNome" runat="server" ErrorMessage="Nome obbligatorio"
ControlToValidate="TxtNome" SetFocusOnError="True" Font-Bold="True"></asp:RequiredFieldValidator>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow>
<asp:TableCell>
<asp:Label ID="Label2" runat="server" Text="Email"></asp:Label>
</asp:TableCell>
<asp:TableCell>
<asp:TextBox ID="TxtEmail" runat="server"></asp:TextBox>
</asp:TableCell>
<asp:TableCell>
<asp:RequiredFieldValidator ID="RequiredEmail" runat="server" ErrorMessage="Email obbligatoria (non verrà mostrata)"
ControlToValidate="TxtEmail" SetFocusOnError="True" Font-Bold="True"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionEmail" runat="server" ErrorMessage="Email non valida"
ControlToValidate="TxtEmail" ValidationExpression="^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"
Font-Bold="True"></asp:RegularExpressionValidator>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow>
<asp:TableCell>
<asp:Label ID="Label3" runat="server" Text="Messaggio: "></asp:Label>
</asp:TableCell>
<asp:TableCell>
<asp:TextBox ID="TxtMessaggio" runat="server" TextMode="MultiLine" Rows="8" Columns="28"></asp:TextBox>
</asp:TableCell>
<asp:TableCell>
<asp:RequiredFieldValidator ID="RequiredText" runat="server" ErrorMessage="Messaggio obbligatorio"
ControlToValidate="TxtMessaggio" Font-Bold="True"></asp:RequiredFieldValidator>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow>
<asp:TableCell>
<asp:Button ID="Button1" runat="server" Text="Send" OnClick="send" /></asp:TableCell>
<asp:TableCell></asp:TableCell>
</asp:TableRow>
</asp:Table>
E l'evento richiamato è questo:
protected void send(object sender, EventArgs e)
{
SendEmail sm = new SendEmail();
sm.send(TxtEmail.Text, TxtMessaggio.Text, TxtNome.Text);
TxtEmail.Text = "";
TxtNome.Text = "";
TxtMessaggio.Text = "";
LblMessage.Text = "Mail inviata";
}
Fin qui nulla di particolare.
|
|
Ultimo aggiornamento Domenica 04 Dicembre 2011 10:33 |
|
Programmazione & Co.
|
|
Venerdì 30 Settembre 2011 17:45 |
|
Avevo la necesità di controllare le modifiche effettuate dentro una particolare directory.
Grazie al forum.html.it sono arrivato presto alla soluzione: usare la classe FileSystemWatcher di C#.
Vediamo come usare questa classe.
Questa è la classe che mi sono creato io:
using System;
using System.Text;
using System.IO;
namespace DirectoryMonitor
{
class DirMonitor
{
private string path;
public DirMonitor(string path)
{
this.path = path;
}
public void Watcher()
{
FileSystemWatcher fw = new FileSystemWatcher();
fw.Path = path; //imposto la directory da controllare
fw.IncludeSubdirectories = true; //includo le subdirectory
fw.NotifyFilter = //imposto gli attributi che mi interessano
NotifyFilters.LastAccess |
NotifyFilters.LastWrite |
NotifyFilters.FileName |
NotifyFilters.DirectoryName;
//imposto gli eventi da controllare
fw.Changed += new FileSystemEventHandler(OnChanged);
fw.Created += new FileSystemEventHandler(OnChanged);
fw.Deleted += new FileSystemEventHandler(OnChanged);
fw.Renamed += new RenamedEventHandler(OnRenamed);
fw.EnableRaisingEvents = true;
Console.WriteLine("Digita q per uscire.");
Console.WriteLine();
while (Console.Read() != 'q') ;
}
private void OnChanged(object source, FileSystemEventArgs e)
{
DateTime dt = new DateTime();
dt = DateTime.UtcNow;
Console.WriteLine("PATH " + e.FullPath + " " + e.ChangeType + " AT " + dt.ToLocalTime());
}
private void OnRenamed(object source, RenamedEventArgs e)
{
DateTime dt = new DateTime();
dt = DateTime.UtcNow;
Console.WriteLine("OLD PATH " + e.OldFullPath + " NEW PATH " + e.FullPath + " " + e.ChangeType + " AT " + dt.ToLocalTime());
}
}
}
|
|
Ultimo aggiornamento Domenica 23 Ottobre 2011 10:34 |
|
Programmazione & Co.
|
|
Venerdì 22 Luglio 2011 08:37 |
|
L'altra settimana ho deciso di riprendere un pò in mano l'Asp.NET e il C#, ma sono talmente abituato al PHP che anche per una cosa così banale ci ho messo una vita.........
Quello che volevo fare era una semplice pagina che mi listasse e visualizzasse tutte le immagini dentro una directory.
Quindi nella root del sito ho la pagina Default.aspx e la cartella Images con dentro varie immagini (in questo caso png).
Ovviamente ci stanno vari modi per farlo.
Prima di tutto vediamo il code-behind della pagina:
namespace Listare_immagini
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string directory = "~/Images/";
string[] images = System.IO.Directory.GetFiles(Server.MapPath(directory), "*.png");
ImgLista.DataSource = images;
ImgLista.DataBind();
}
}
}
Abbiamo una string che rappresenta la directory dove ci sono le immagini.
|
|
Ultimo aggiornamento Domenica 23 Ottobre 2011 10:38 |
|
Programmazione & Co.
|
|
Martedì 21 Giugno 2011 13:55 |
|
GridView è uno controllo server molto comodo e molto utlizzato per rappresentare in maniera strutturata i dati presi da un database.
Hanno parecchie proprietà, ma gli manca la possibilità di filtrare i dati.
Oggi vi spiegao come ho fatto io per filtrare i dati attarverso una DropDownList.
In sostanza ho due DDL che fanno da filtro su una GV.
Tutti e tre prendono i dati da un ObjectDataSource e da metodi personalizzati.
Prima di tutto io ho aggiunto un nuovo progetto alla mia soluzione in modo da crare le varie classi/metodi personalizzati per interfacciarli al db, l'ho chiamato TNWB.
Qua dentro ho creato questa classe:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;
namespace TNWDB
{
public class Connection
{
private static SqlConnection conn = new SqlConnection("Data Source=10.0.5.131;Initial Catalog=TNW;Persist Security Info=True;User ID=user;Password=pass");
public static SqlConnection getConnection()
{
return conn;
}
}
}
Questa classe si occupa solo di istanziare la connessione.
|
|
Ultimo aggiornamento Domenica 23 Ottobre 2011 10:40 |
|
|
<< Inizio < Prec. 1 2 3 Succ. > Fine >>
|
|
Pagina 1 di 3 |