我在Java中有一个Serverside代码,在.Net中有客户端页面。现在我必须从Java中的服务器端操作类加载.Net中的下拉列表。为此,我创建了一个asp下拉列表,如下所示:
<asp:DropDownList ID="invoiceYear" runat="server" OnLoad='<%#GetYearRange()%>'
Width="150px" AutoPostBack="True">
</asp:DropDownList>
我在aspx.cs中有一个方法GetYearRange,如下所示:
[WebMethod]
public static string GetYearRange()
{
System.Diagnostics.Debug.WriteLine("I am in");
string strNewValue = "page=" + "" + "&rows=" + "" + "&sort=" + "" + "&order=" + "";
string ss = ServerUtil.getServerString(strNewValue, "/invoice/invoice!getYearRange.action");
System.Diagnostics.Debug.WriteLine("ss-->" + ss);
return ss;
}
它不会采用那种方法。请告诉我如何将此方法的结果输入我的下拉列表?
答案 0 :(得分:0)
不应该使用[WebMethod]
属性进行修饰,也不能正确调用方法。如果您希望将其自身与值绑定,则需要将其DataSource设置为正确的集合。如果您尝试设置其当前选定值,则需要专门设置该值。我真正的问题是:你想用这段代码做什么?
如果您尝试使用从服务电话收到的值加载下拉列表:
protected void Page_Load(object sender, EventArgs e)
{
// GetYearRange() will have to return at least a string[]
// It would be better if it was a ListItem[] or a List<ListItem>
invoiceYear.DataSource = GetYearRange();
invoiceYear.DataBind();
}
如果您已经拥有DataBound,但需要强制所选项目是您服务的结果,则需要使用OnDataBound
事件:
<asp:DropDownList ID="invoiceYear" runat="server" OnDataBound="invoiceYear_DataBound"
Width="150px" AutoPostBack="True">
</asp:DropDownList>
...
protected void invoiceYear_DataBound(object sender, EventArgs e)
{
invoiceYear.SelectedValue = GetYearRange();
}