无法通过静态方法在 ListBox 中显示值
Unable to display values in ListBox from static method
在 Static WebMethod 上,我无法获得 ListBoxcontrol,因此我将该控件存储在 Page_Load 事件的会话中,如下所示:
HttpContext.Current.Session["LB_AvailFields"] = lbavailablefields;
调用 WebMethod 后,我从数据库中获取值并尝试填充 ListBox,但 ListBox 未显示任何值。
以下是硬编码测试代码,它在 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();
WebMethod 的概念是为您提供类似 web 服务的快速体验。该网页在服务器上不存在,就像 Page_Load 工作时一样。预期用途是从客户端脚本调用 Web 方法,return 数据到客户端并在那里使用 (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 调用该方法,只需使用 returned 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);
在 Static WebMethod 上,我无法获得 ListBoxcontrol,因此我将该控件存储在 Page_Load 事件的会话中,如下所示:
HttpContext.Current.Session["LB_AvailFields"] = lbavailablefields;
调用 WebMethod 后,我从数据库中获取值并尝试填充 ListBox,但 ListBox 未显示任何值。 以下是硬编码测试代码,它在 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();
WebMethod 的概念是为您提供类似 web 服务的快速体验。该网页在服务器上不存在,就像 Page_Load 工作时一样。预期用途是从客户端脚本调用 Web 方法,return 数据到客户端并在那里使用 (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 调用该方法,只需使用 returned 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);