3 pagine in totale: <<Indietro 1 2 [3]
Per completare l'opera, è necessario poi specificare una serie di LinkButton (o Button) impostando la proprietà CommandName su update , edit o cancel , in base all'azione associata a ciascun pulsante.
Ciò che è di particolare importanza è il codice utilizzato in fase di aggiornamento dei dati. Recuperando l'istanza associata alla riga corrente, dovremo recuperare tramite il metodo FindControl il riferimento alla textbox (o al controllo) utilizzato, per poi comporre manualmente la query.
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<SCRIPT language="C#" runat="server">
// stringa di conn
string connstring = @"server=localhost;database=master;trusted_connection=true;";
void Page_Load () {
// estrazione dati
if (!Page.IsPostBack) {
bindData() ;
}
}
// evento di pressione del pulsante Modifica
void onEditDataList (Object src, DataListCommandEventArgs e) {
// cambio l'indice
myDataList.EditItemIndex = e.Item.ItemIndex;
bindData();
}
// evento di pressione del pulsante Annulla
void onCancelDataList (Object src, DataListCommandEventArgs e) {
// imposto l'indice a -1, overo non seleziono nulla
myDataList.EditItemIndex = -1;
bindData();
}
// evento di pressione del pulsante Salva
void onUpdateDataList (Object src, DataListCommandEventArgs e) {
// e.Item è il riferimento al record corrente
string ID = ((Label) e.Item.FindControl("ID")).Text;
string nome = ((TextBox) e.Item.FindControl("nome")).Text;
string indirizzo = ((TextBox) e.Item.FindControl("indirizzo")).Text;
string telefono = ((TextBox) e.Item.FindControl("telefono" )).Text;
// query di aggiornamento
string strSQL;
strSQL = "UPDATE rubrica SET nome = '" + nome.Replace("'", "''") + "', ";
strSQL += " indirizzo = '" + indirizzo.Replace("'", "''") + "', ";
strSQL += " telefono = '" + telefono.Replace("'", "''") + "' ";
strSQL += " WHERE ID = " + ID;
ExecuteSQL(strSQL);
// deseleziono record corrente ed aggiorno il DataList
myDataList.EditItemIndex = -1;
bindData();
}
// routine di estrazione dati
void bindData () {
// effettuo il DataBinding sul control
// connessione
SqlConnection conn = new SqlConnection(connstring);
// query
SqlDataAdapter query = new SqlDataAdapter("SELECT * FROM rubrica", conn);
// creo il dataset
DataSet querydataset = new DataSet();
query.Fill(querydataset);
myDataList.DataSource = querydataset;
myDataList.DataBind ( );
}
int ExecuteSQL (string strSQL) {
SqlConnection conn = new SqlConnection(connstring);
conn.Open();
SqlCommand objcommand = new SqlCommand(strSQL, conn);
// eseguo la query e restituisco il numero
// di record manipolati dalla stessa
int Totals = objcommand.ExecuteNonQuery();
conn.Close();
return Totals;
}
</SCRIPT>
<form runat="server">
<asp:DataList id="myDataList" runat="server"
onEditCommand="onEditDataList"
onUpdateCommand="onUpdateDataList"
onCancelCommand="onCancelDataList"
EditItemStyle-Back>
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "nome") %></td>
<td><asp:linkbutton runat="server" commandname="edit" text="Modifica" />
</ItemTemplate>
<EditItemTemplate>
<table >
<tr>
<th colspan="2">Modifica ID <asp:label id="ID" runat="server" text='<%# DataBinder.Eval(Container.DataItem, "ID") %>' /></th>
</tr>
<tr>
<td>Nome:</td>
<td><asp:textbox id="nome" runat="server" text='<%# DataBinder.Eval(Container.DataItem, "nome") %>' /></td>
</tr>
<tr>
<td>Indirizzo:</td>
<td><asp:textbox id="indirizzo" runat="server" text='<%# DataBinder.Eval(Container.DataItem, "indirizzo") %>' Columns="50" /></td>
</tr>
<tr>
<td>Telefono:</td>
<td><asp:textbox id="telefono" runat="server" text='<%# DataBinder.Eval(Container.DataItem, "telefono") %>' /></td>
</tr>
<tr>
<td colspan="2">
<asp:linkbutton commandname="update" runat="server" text="Salva" />
<asp:linkbutton commandname="cancel" runat="server" text="Annulla" />
</td>
</tr>
</table>
</EditItemTemplate>
</asp:DataList>
</form>Il risultato è la possibilità di avere una griglia i cui dati sono modificabili in maniera molto semplice.

Conclusioni
Finisce qui l'analisi dei più semplici tra i Data Controls: abbiamo compreso meglio quale sia l'approccio da utilizzare in questo nuovo modo di estrarre e visualizzare i dati.
Di sicuro il DataGrid offre funzionalità più avanzate e soprattutto automatizzate, ma anche i due analizzati oggi possono ritornare utili in diversi casi pratici.
All'interno dell'allegato potete trovare diversi esempi da cui partire per comprendere al meglio come utilizzare questi due Data Control: buon divertimento!
3 pagine in totale: <<Indietro 1 2 [3]
Attenzione: Questo articolo contiene un allegato
Contenuti dell'articolo
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.







Difficoltà

Stampa
Download


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!
