2012-10-25 86 views
0

我在.Net中有Java中的Serverside代碼和客戶端頁面。現在我必須從Java的serverside操作類中加載.Net中的下拉列表。要做到這一點,我創建了一個ASP下拉列表如下所示:從aspx下拉列表中調用aspx.cs文件中的方法

<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

它不應該使用[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(); 
} 

如果你已經擁有了它數據綁定,但你需要強制選擇的項目是你的服務的結果,你需要使用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(); 
} 
+0

坦率地說,我是全新的,昨天剛剛開始asp。它已經是現有的項目。有了這段代碼,我在返回yearMap的服務器中調用一個動作。你可以請教我如何將它與數據庫綁定到集合? – Naga

+0

我已經發布了一個示例更新,它可能需要修改。 –

+0

我試過..它不從服務器拉數據。此外,它甚至不打印我試圖在服務器之前測試的調試信息。意味着它至少不會採用這種方法。自2天以來我一直堅持這一點。請幫我解決它今天! – Naga

相關問題