0

我有 Java 中的服务器端代码和 .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;
}

它不会采用那种方法。请建议我如何将这种方法的结果放入我的下拉列表中?

4

1 回答 1

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();
}
于 2012-10-25T19:33:34.893 回答