我试图让下拉列表通过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 :(得分:1)
看起来你正在返回一个无法转换为整数的值。
你可以做的是创建一个可以引用措辞价值的枚举:
int CategoryID = Enum.GetValues(typeof(Category), (ddlThree.SelectedValue));
你的Enum看起来像这样:
enum Category
{
Size= 1,
Gender = 2,
Value = 3
}
答案 1 :(得分: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));
}
}
}