no. non si fa con i controlli server come il datasource. Si fa con ado.net per esempio con un dataset o un datareader, e facendo una query al database.
questo è un esempio che compila e funziona
GetProdotti.ashx
se non conosci ado.net è un altro discorso... cerca su google, es (il primo che ho trovato): http://support.microsoft.com/kb/301216.codice:class Prodotto { public string ID { get; set; } public string Nome { get; set; } } public class GetProdotti : IHttpHandler { public void ProcessRequest(HttpContext context) { List<Prodotto> prodotti = new List<Prodotto>(); DataSet dataSet = RecuperaDati(); foreach (DataRow riga in dataSet.Tables["Prodotti"].Rows) { Prodotto prodotto = new Prodotto(); prodotto.ID = riga["ID"].ToString(); prodotto.Nome = riga["Nome"].ToString(); prodotti.Add(prodotto); } string json = JsonConvert.SerializeObject(prodotti); context.Response.ContentType = "application/json"; context.Response.Write(json); } public bool IsReusable { get { return false; } } /// <summary> /// Funzione che recupera i dati dal tuo db e li memorizza in un dataset /// </summary> /// <returns>Il dataset con i dati della query</returns> private DataSet RecuperaDati() { // questo dataset lo devi recuperare dalla tua sorgente dati! // per esempio con dataadapter, sqlconnection e sqlcommand. // qui lo riempio a mano SOLO PER SEMPLICITA // e per rendere l'esempio funzionante. DataSet dataSet = new DataSet(); DataTable tableProdotti = new DataTable("Prodotti"); tableProdotti.Columns.Add("ID", typeof(string)); tableProdotti.Columns.Add("Nome", typeof(string)); dataSet.Tables.Add(tableProdotti); dataSet.Tables["Prodotti"].Rows.Add("1", "Prodotto 1"); dataSet.Tables["Prodotti"].Rows.Add("2", "Prodotto 1"); dataSet.Tables["Prodotti"].Rows.Add("3", "Prodotto 1"); return dataSet; } }

Rispondi quotando