asp.net

Mattepuffo's logo
Asp.NET su Apache e Linux

Asp.NET su Apache e Linux

Asp.NET è la teconologia per la creazione di applicazioni e servizi web di Microsoft.

Potremmo o vorremo però far girare un'applicazione Asp.NET su Apahce e Linux.

Tutto ciò non è impossibile (anche se ovviamente non propio consigliato).

Vediamo come.

Ho fatto qualche test su Debian e vi posto le operazioni.

Prima di tutto dobbiamo installare un pò di roba:

#aptitude install mono-xsp2 mono-apache-server2 libapache2-mod-mono mono-gmcs mono-utils

Come vedete abbiamo installato un pò di Mono, un progetto molto interessante che si occupa di importare bel pò di .NET Framework in Linux/MAC.

A questo punto dobbiamo modificare il file mod_mono.conf.

Mattepuffo's logo
Listare le immagini in Asp.NET

Listare le immagini in Asp.NET

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.

Mattepuffo's logo
Filtri GridView in Asp.NET e C#

Filtri GridView in Asp.NET e C#

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.

Mattepuffo's logo
Il controllo server Menu in Asp.NET

Il controllo server Menu in Asp.NET

SiteMapDataSource e SiteMapPath sono due controlli usati per la creazione del sistema di navigazione nelle pagine web in Asp.NET.

Il primo viene associato al controllo server Menu per la creazione del menu; il secondo invece può essere usato per crea un breadcrumb.

Partiamo dal primo.

Per utilizzare il SiteMapDataSource dobbiamo prima di tutto creare il file Web.sitemap dentro la root del sito:

<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="~/Default.aspx" title="Home" description="Home">
<siteMapNode url="~/Impianto/Default.aspx" title="Impianto"  description="Impianto">
<siteMapNode url="~/Impianto/Decoder.aspx" title="Decoder" description="Decoder" />
<siteMapNode url="~/Impianto/Video.aspx" title="Video" description="Video" />
<siteMapNode url="~/Impianto/Network.aspx" title="Network" description="Network" />
<siteMapNode url="~/Impianto/Gruppi.aspx" title="Gruppi" description="Gruppi" />
<siteMapNode url="~/Impianto/Deploy.aspx" title="Deploy" description="Deploy" />
</siteMapNode>
<siteMapNode url="~/Moduli/Default.aspx" title="Moduli" description="Moduli">
<siteMapNode url="~/Moduli/Moduli.aspx" title="Moduli" description="Moduli" />
<siteMapNode url="~/Moduli/AssociazioneNetwork.aspx" title="AssociazioneNetwrok" description="Associazione netwrok" />
</siteMapNode>
<siteMapNode url="~/Library/Default.aspx" title="Library" description="Library">
<siteMapNode url="~/Library/Audio.aspx" title="Audio" description="Audio" />
<siteMapNode url="~/Library/Video.aspx" title="Video" description="Video" />
</siteMapNode>
<siteMapNode url="~/Palinsesti/Default.aspx" title="Palinsesti" description="Palinsesti">
<siteMapNode url="~/Palinsesti/Palinsesti.aspx" title="Palinsesti" description="Palinsesti" />
<siteMapNode url="~/Palinsesti/Pianificazione.aspx" title="Pianificazione" description="Pianificazione" />
</siteMapNode>
<siteMapNode url="~/Manutenzione/Default.aspx" title="Manutenzione" description="Manutenzione">
<siteMapNode url="~/Manutenzione/Notifiche.aspx" title="Notifiche" description="Notifiche" />
<siteMapNode url="~/Manutenzione/Telegrammi.aspx" title="Telegrammi" description="Telegrammi" />
</siteMapNode>
<siteMapNode url="~/Trasferimenti/Default.aspx" title="Trasferimenti" description="Trasferimenti">
<siteMapNode url="~/Trasferimenti/DeployDecoder.aspx" title="Deploy Decoder" description="Decoder" />
<siteMapNode url="~/Trasferimenti/DeployServer.aspx" title="Deploy Server" description="Deploy" />
</siteMapNode>
</siteMapNode>
</siteMap>

Il file è un XML che prende come nodi i SiteMapNode con gli url delle pagine.

Mattepuffo's logo
Selezionare tutte le CheckBox in C#

Selezionare tutte le CheckBox in C#

Tempo fa scrissi un articolo per far vedere com'era possibile integrare le CheckBox in una GridView.

Ovviamente possiamo volerle selezionare/deselezionare tutte in una botta.

Questo è possibile farlo abbastanza agilmente in Javascript; ma è possibile farlo anche in C#.

Vediamo come fare; supponendo di trovarci dentro una pagina Asp.NET con una GridView del genere:

<asp:Button ID="selectAll" runat="server" Text="Seleziona tutti" OnClick="btn_selectAll" />
<asp:Button ID="deselectAll" runat="server" Text="Deseleziona tutti" OnClick="btn_deselectAll" />
<asp:GridView ID="DecoderView" runat="server" DataKeyNames="sito#" DataSourceID="objDecoder"
AllowPaging="True" AllowSorting="True" AutoGenerateSelectButton="True" PageSize="5"
AutoGenerateColumns="False" CssClass="grid">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="SelectedItem" AutoPostBack="true" runat="server" OnCheckedChanged="btn_check" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="sito#" HeaderText="sito#" SortExpression="sito#" InsertVisible="False" />
<asp:BoundField DataField="localita" HeaderText="localita" SortExpression="localita" />
<asp:BoundField DataField="descrizione" HeaderText="descrizione" SortExpression="descrizione" />
<asp:BoundField DataField="IP" HeaderText="IP" SortExpression="IP" />
<asp:BoundField DataField="riserva" HeaderText="riserva" SortExpression="riserva" />
<asp:BoundField DataField="Expr2" HeaderText="gruppo#" SortExpression="Expr2" />
<asp:BoundField DataField="Expr1" HeaderText="tipo_deploy#" SortExpression="Expr1" />
<asp:BoundField DataField="versione" HeaderText="versione" SortExpression="versione" />
<asp:BoundField DataField="versione_itl" HeaderText="versione_itl" SortExpression="versione_itl" />
<asp:BoundField DataField="ultimo_avvio" HeaderText="ultimo_avvio" SortExpression="ultimo_avvio" />
<asp:BoundField DataField="app_disk_space" HeaderText="app_disk_space" SortExpression="app_disk_space" />
<asp:BoundField DataField="TGU" HeaderText="TGU" SortExpression="TGU" />
<asp:BoundField DataField="ip_voyager" HeaderText="ip_voyager" SortExpression="ip_voyager" />
</Columns>
</asp:GridView>

Come vedete sopra la GV ci sono due pulsanti che richiamano due eventi nel code-behind:

Mattepuffo's logo
GridView con pager personalizzato

GridView con pager personalizzato

In questo articolo ho cominciato a parlarvi di come controllare una GridView da code-behind.

Come detto quell'articolo non è completo per due motivi:

  • il pager
  • il sorting

Qui vediamo come usare un pager personalizzato.

Prima di tutto vi riporto la GV:

protected void decoderViewSource()
{

SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["MYDB"].ConnectionString);
String queryString = "SELECT * FROM siti";
try
{
conn.Open();
SqlDataAdapter adapter = new SqlDataAdapter(queryString, conn);
DataSet ds = new DataSet();
adapter.Fill(ds);
DataView dv = new DataView();
dv = ds.Tables[0].DefaultView;
if (sortExpr != string.Empty)
{
dv.Sort = string.Format("{0} {1}", sortExpr, sortDir);
}
DecoderView.DataSource = dv;
DecoderView.AutoGenerateColumns = false;
DecoderView.AutoGenerateSelectButton = true;
DecoderView.AllowSorting = true;
DecoderView.AllowPaging = true;
DecoderView.CssClass = "grid";
DecoderView.PageSize = int.Parse(ddlPagine.SelectedValue);
DecoderView.PagerSettings.Visible = false;
DecoderView.DataBind();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
conn.Close();
}
}