从aspx dropdownlist调用aspx.cs文件中的方法

时间:2012-10-25 19:30:07

标签: asp.net

我在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;
}

它不会采用那种方法。请告诉我如何将此方法的结果输入我的下拉列表?

1 个答案:

答案 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();
}