My approach. Note it assumed that you have a Telerik RadAjaxScriptManager on your page (or master page that you will need to access).
Step 1 Include the Following Namespace in Page Code Behind Class
using System.Web.Script.Serialization;
Step 2 Create a Class Object to be Serialized in the Page Code Behind Class
[Serializable]
public class itm
{
public string val { get; set; }
public string txt { get; set; }
}
Step 3 Create a Serialization Method in the Page Code Behind Class
public string ToJSON ( object obj )
{
JavaScriptSerializer serializer = new JavaScriptSerializer ();
return serializer.Serialize ( obj );
}
Step 4 Create a Method in the Page Code Behind Class That Will Take Data, Populate a list of itms,Serialize that list into a jSON string, then call the RadAjaxManager's ResponseScripts.Add method to pass the jSON string to the client side.
A few notes here. One you could use AJAX to make a call to a web service to accomplish the same thing, for my example was just doing a basic test so I didn't bother. Also note that you will need to call this method somewhere (on a databind of a form view, Page_Load, whatever, inorder for the method to do anything). Note I'm doing a very lazy and inefficient way to get my data out of the database, I actually defined a sql datasource on my aspx page, and then reference it in the code behind. You probably will want to get your data another way...
void JSONListBoxItems ( hsRadListBox lst, SqlDataSource ds, string txt, string val )
{
lst.Items.Clear ();
List<itm> itms = new List<itm> ();
if ( lst == null || ds == null || string.IsNullOrEmpty ( txt ) || string.IsNullOrEmpty ( val ) )
{
;
}
else
{
DataView view = (DataView)ds.Select ( DataSourceSelectArguments.Empty );
if ( view != null && view.ToTable () != null )
{
DataTable table = view.ToTable ();
for ( int i = 0 ; i< table.Rows.Count ; i++ )
{
itm t = new itm ();
t.txt = table.Rows[ i ][ txt ].ToString ();
t.val = table.Rows[ i ][ val ].ToString ();
itms.Add ( t );
}
}
}
myRadAjaxManager.ResponseScripts.Add ("POPRadListBX('" + lst.ClientID.ToString () + "'," + ToJSON ( itms ) + ");" );
}
Step 5, Add the Following Javascript on the ASPX page.
function POPRadListBX(tid, js) {
var lst = $find(tid);
if (lst != null) {
var zzz = lst.get_items();
lst.trackChanges();
for (var i = 0; i < js.length; i++) {
var item = new Telerik.Web.UI.RadListBoxItem();
item.set_text(js[i].txt);
item.set_value(js[i].val);
zzz.add(item);
}
lst.commitChanges();
}
}
Done. If I have time I'll circle back and make a downloadable example.
1 comment:
thanks a lot
Post a Comment