2016-04-29 54 views
1

静态的WebMethod我无法得到ListBoxcontrol,所以我已经存储了控制会议Page_Load事件为:无法从静态方法列表框中显示值

HttpContext.Current.Session["LB_AvailFields"] = lbavailablefields; 

调用的WebMethod之后,我的从数据库中的值,并试图填充列表框但列表框没有显示任何值。 以下是硬编码的测试代码,它可以在Page_Load上正常工作,但在WebMethod中无法正常工作,请告诉我哪里出错了?

List<MyListItem> LB = new List<MyListItem>(); 
MyListItem lbitem; 
for(int i= 0;i<5;i++)   
{ 
    lbitem = new MyListItem(); 
    lbitem.PMKey = "Key" + i; 
    lbitem.PMSystemName = "SystemName: " + i; 
    LB.Add(lbitem); 
} 
ListBox lbox = (ListBox)HttpContext.Current.Session["LB_AvailFields"]; 
lbox.DataSource = LB; 
lbox.DataTextField = "PMSystemName"; 
lbox.DataValueField = "PMKey"; 
lbox.DataBind(); 

回答

2

WebMethod的概念是给你一个像体验一样的快速网络服务。该网页在服务器上不存在,就像Page_Load工作时一样。使用目的是调用从客户端脚本的Web方法,将数据返回到客户端和消费有(JavaScript的)

[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public MyReturnResultObject[] GetListBoxData() 
{ 
    List<MyReturnResultObject> result = new List<MyReturnResultObject>(); 
    loop to fill your return result 
    { 
     var oneResult = new MyReturnResultObject(); 
     ... 
     result.Add(oneResult); 
    } 
    return result.toArray(); 
} 

然后在客户端,您使用JavaScript调用该方法,只要使用返回的JSON填充你的列表框(使用javascript)。有很多方法可以在JavaScript中做到这一点,显示最基本的;如果jQuery对您可用,您可以使用它。

var myList = ...; // obtain a reference to your list box 
    var anOption; 
    loop through json 
     anOption = document.createElement("Option"); 
     anOption.text = ...; //from json 
     anOption.value = ...; //from json 
     myList.add(anOption); 
相关问题