2012-09-13 128 views
0

我試圖通過C#使一個下拉列表控件成爲另一個下拉列表控件。 我的計劃是,第一個DropDownList顯示「大小」「性別」「模型」等類別,當您選擇其中一個類別時,新的DropDownList將顯示前面所選類別的新子類別。從一個下拉列表中選取類別以顯示另一個下拉列表中的子類別

例如,如果我選擇「大小」,會出現一個新的DropDownList shal,並且可以從多個大小中進行選擇。

當我測試這樣的聲音時,我得到一個錯誤:確保你的方法參數是正確的格式。

這裏是我的代碼如下所示:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using ContactTableAdapters; 

public partial class Test : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
    protected void ddlTwo_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     ddlTwo.Items.Clear(); 
     if (ddlThree.SelectedValue != "0") 
     { 
      Contact.CategoriesDataTable table; 
      ddlTwo.AppendDataBoundItems = true; 
      ddlTwo.Items.Add(new ListItem("Choose", "0")); 
      CategoriesTableAdapter subM = new CategoriesTableAdapter(); 
      int CategoryID = Convert.ToInt32(ddlThree.SelectedValue); //This is where I get the error 
      table = subM.GetCategoryByCategoryID(CategoryID); 
      foreach (Contact.CategoriesRow row in table) 
      { 


       string text = row.Category; 
       string value = row.CategoryID.ToString(); 
       ddlTwo.Items.Add(new ListItem(text, value)); 

      } 
     } 
    } 
} 

有人能告訴我,我可能做錯了?

+0

請調試,看看ddlThree.SelectedValue究竟是什麼。我的猜測爲空... –

+0

「輸入字符串格式不正確」它說。 –

+0

這是異常消息的值,是否正確?我需要知道ddlThree.SelectedValue的值是什麼 –

回答

1

看起來您正在返回無法轉換爲整數的值。

你可以做的是創造一種可以參考的措辭值的枚舉:

int CategoryID = Enum.GetValues(typeof(Category), (ddlThree.SelectedValue)); 

而且你的枚舉應該是這樣的:

enum Category 
{ 
Size= 1, 
Gender = 2, 
Value = 3 
} 
+0

我完全不知道枚舉是什麼! –

+0

Kasper,枚舉(或枚舉簡稱)是一種區分對象類型,允許您存儲特定的常量值。在這裏,我們使用一種既有自定義字符串也有整數值的「Catergory」類型,而不是對轉換進行硬編碼(如Convert.ToInt32),我們可以使用En um.GetValues返回整數,或Enum.GetNames返回字符串。希望這可以解釋這種類型的用法。 – X3074861X

0

如果你實際上是響應一個事件上ddlTwo,然後使用這個:

protected void ddlTwo_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     ddlThree.Items.Clear(); 
     if (ddlTwo.SelectedValue != "0") 
     { 
      Contact.CategoriesDataTable table; 
      ddlThree.AppendDataBoundItems = true; 
      ddlThree.Items.Add(new ListItem("Choose", "0")); 
      CategoriesTableAdapter subM = new CategoriesTableAdapter(); 
      int CategoryID = Convert.ToInt32(ddlTwo.SelectedValue); //This is where I get the error 
      table = subM.GetCategoryByCategoryID(CategoryID); 
      foreach (Contact.CategoriesRow row in table) 
      { 


       string text = row.Category; 
       string value = row.CategoryID.ToString(); 
       ddlThree.Items.Add(new ListItem(text, value)); 

      } 
     } 
    } 
+0

那不是100%的工作,因爲當我在ddlTwo中選擇「Gender」「Size」或「Model」時,ddlThree中會出現相同的結果嗎? –

+0

然後subM.GetCategoryByCategoryID(CategoryID);很可能不是您想用來填充下拉列表的方法。 –

相關問題