我试图获取名为ddlBrand的下拉列表的值,因为我可以使用它来动态更改另一个名为ddlSubBrand的下拉列表中的项目,该列表具有相同的形式。
这是我的AddProduct.aspx中的2下拉列表
<asp:DropDownList ID="ddlBrand" runat="server"
OnSelectedIndexChanged="ddlBrand_SelectedIndexChanged"
AutoPostBack="true" ></asp:DropDownList>
<asp:DropDownList ID="ddlSubBrand" runat="server">
</asp:DropDownList><br /><br />
对于代码隐藏文件,我有一个页面加载将数据从我的SQL绑定到下拉列表,我有另一种方法用于SelectedIndexChanged,我试图在他们尝试获取值时尽快选择它。
protected void Page_Load(object sender, EventArgs e)
{
BrandManager brandManager = new BrandManager();
CategoryManager categoryManager = new CategoryManager();
if (Page.IsPostBack == false)
{
ddlBrand.DataSource = brandManager.getAllBrand();
ddlBrand.DataTextField = "BrandName";
ddlBrand.DataValueField = "BrandId";
ddlBrand.DataBind();
ListItem item = new ListItem();
item.Value = "0";
item.Text = "--Select Brand--";
ddlBrand.Items.Insert(0, item);
ddlCategory.DataSource = categoryManager.getAllCategory();
ddlCategory.DataTextField = "CategoryName";
ddlCategory.DataValueField = "CategoryId";
ddlCategory.DataBind();
ListItem item1 = new ListItem();
item.Value = "0";
item.Text = "--Select Category--";
ddlBrand.Items.Insert(0, item);
}
}
protected void ddlBrand_SelectedIndexChanged(object sender, EventArgs args)
{
int value = int.Parse(ddlBrand.SelectedValue);
}
我似乎得到一个错误,上面写着:
&#39; /&#39;中的服务器错误应用。
无法在DropDownList中选择多个项目。
描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中的起源位置的更多信息。
异常详细信息:System.Web.HttpException:无法在DropDownList中选择多个项目。
来源错误:
在执行当前Web请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息。
答案 0 :(得分:1)
您复制粘贴这些行并且没有将项目更改为item1而ddlBrand更改为ddlSubBrand
item.Value = "0";
item.Text = "--Select Category--";
ddlBrand.Items.Insert(0, item);
所以基本上你要将项目两次添加到ddlBrand。如果选择了这个,那么你有多个&#39;选择的项目。
将您的代码更改为:
item1.Value = "0";
item1.Text = "--Select Category--";
ddlSubBrand.Items.Insert(0, item1);
答案 1 :(得分:0)
场景类似于下面的代码
最初,我们为多个角色选择添加了ListBox-
<asp:ListBox ID="lstRoles" runat="server" CssClass="form-control" AppendDataBoundItems="true" SelectionMode="Multiple"></asp:ListBox>
drpFunderName.DataSource = entities.GetRoles.ToList();
drpFunderName.DataValueField = "ID";
drpFunderName.DataTextField = "Name";
drpFunderName.DataBind();
在编辑模式下,我们正在显示多个角色-
IList<RoleModel> roleModels = entities.Roles.Where(r => r.IsActive == true).ToList();
for (int i = 0; i < roleModels.Count; i++)
{
for (int j = 0; j < lstRoles.Items.Count; j++)
{
if (roleModels[i].Id == int.Parse(lstRoles.Items[j].Value))
{
lstRoles.Items[j].Selected = true;
}
}
}
更改 SelectionMode =“ Single” 后,还使用与上述相同的逻辑进行角色选择(多项选择),然后出现错误,如在DropDownList错误中不能选择多项 >
您必须在“编辑”表单中更改用于角色选择的代码-
RoleModel roleModel = entities.Roles.FirstOrDefault(r => r.RoleId == 4);
if (roleModel != null && roleModel.RoleId.HasValue)
{
lstRoles.SelectedValue =Convert.ToString(roleModel.RoleId.Value);
}
答案 2 :(得分:-1)
==&gt;将此项放入页面加载事件
if(!IsPostBack) { BindGrid();
ddlBrand.AppendDataBoundItems = true;
String strQuery = "select Brandid, Brandname from University";
ddlBrand.DataSource = cmd.ExecuteReader();
ddlBrand.DataTextField = "sUniversity_name";
ddlBrand.DataValueField = "nUniversity_id";
ddlBrand.DataBind();
}
===&GT; SelectedIndex Change事件中的更改:
protected void ddlBrand_SelectedIndexChanged(object sender, EventArgs e)
{
ddlCategory.Items.Clear();
ddlCategory.Items.Add(new ListItem("--Select Sub-Category--", ""));
ddlCategory.AppendDataBoundItems = true;
String strQuery = "select nCategory_id, sCategory_name from Category " +
"where nBrandid=@nBrandid";
try
{
con.Open();
ddlCategory.DataSource = cmd.ExecuteReader();
ddlCategory.DataTextField = "sCategory_name";
ddlCategory.DataValueField = "nCategory_id";
ddlCategory.DataBind();
if (ddlCategory.Items.Count > 1)
{
ddlCategory.Enabled = true;
}
else
{
ddlCategory.Enabled = false;
ddlDept.Enabled = false;
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
con.Close();
con.Dispose();
}