Semplice esempio in Vb.net (referenziando la dll di AJAX per .NET) che consente, lato client, di invocare, tramite AJAX, un metodo che restituisce un datatable e caricare con
esso una dropdown.
funzione lato server che ritorna una datatable:
<Ajax.AjaxMethod()> _
Public Function GetCountry() As DataTable
Dim dt As New DataTable
Dim i As Int16
With dt
.Columns.Add(New DataColumn("codice"))
.Columns.Add(New DataColumn("descrizione"))
End With
For i = 0 To 50
Dim r = dt.NewRow
With r
.item("codice") = i
.item("descrizione") = "des_" & i.ToString
End With
dt.Rows.Add(r)
Next
Return dt
End Function
Ricordarsi di mettere nel Load della pagina
Ajax.Utility.RegisterTypeForAjax(
GetType(testAJAX))
Codice HTML
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="testAJAX.aspx.vb" Inherits="TEST.testAJAX"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>testAJAX</title>
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<input onclick="Fill();" type="button" value="Carica Lista">
<span id="dd" name="dd"></span>
</form>
<script language="javascript">
function Fill()
{
var html = [];
for(var i=0; i<testAJAX.GetCountry().value.Rows.length; i++)
{
v = testAJAX.GetCountry().value.Rows[i].codice
t = testAJAX.GetCountry().value.Rows[i].descrizione
html[html.length] = "<option value=\" + v + \">" + t + "</option>";
}
document.getElementById("dd").innerHTML = "<select id=\"sel\">" + html.join("") + "</select>";
}
</script>
</body>
</HTML>