填充下拉列表无法正常工作

时间:2014-03-22 17:47:13

标签: c# asp.net

这里的ext是存储“System.Web.UI.WebControls.Label”但我想在下拉列表中检索所选文本。这有什么问题? 我根据dropdownlist1填充dropdownlist2。请参考以下代码。

    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
    a = DropDownList1.SelectedItem.Text;
    DropDownList2.Items.Clear();
    if (a == "Electronic")
    {
        DropDownList2.Items.Add(new ListItem("---Select SubCategory---","0"));
        DropDownList2.Items.Add(new ListItem("Mobile", "1"));
        DropDownList2.Items.Add(new ListItem("Tablet", "2"));
        DropDownList2.Items.Add(new ListItem("Laptop", "3"));
        DropDownList2.Items.Add(new ListItem("Accessories", "4"));
    }
    else if (a == "Kitchen")
    {
        DropDownList2.Items.Add(new ListItem("---Select SubCategory---", "0"));
        DropDownList2.Items.Add(new ListItem("Cookware", "1"));
        DropDownList2.Items.Add(new ListItem("Dinner set", "2"));
        DropDownList2.Items.Add(new ListItem("Food processor", "3"));
        DropDownList2.Items.Add(new ListItem("Microwave", "4"));

    }
    else if (a == "Books")
    {
        DropDownList2.Items.Add(new ListItem("---Select SubCategory---", "0"));
        DropDownList2.Items.Add(new ListItem("Entrance exam", "1"));
        DropDownList2.Items.Add(new ListItem("Fiction", "2"));
        DropDownList2.Items.Add(new ListItem("Romance", "3"));
        DropDownList2.Items.Add(new ListItem("Thriller", "4"));

    }
    else if (a == "Beauty")
    {
        DropDownList2.Items.Add(new ListItem("---Select SubCategory---", "0"));
        DropDownList2.Items.Add(new ListItem("Mens perfume", "1"));
        DropDownList2.Items.Add(new ListItem("Womens perfume", "2"));
    }
      string ext = DropDownList2.SelectedItem.Text;
}

修改

  

这里的问题是我正在使用验证&如果按下提交按钮,则不得允许提交。但我有更多的4个按钮用于导航,验证不允许我使用这些按钮,但它应该允许我执行button2_click的代码而不允许submit_click。

3 个答案:

答案 0 :(得分:2)

因此,您的意思是您希望验证仅适用于提交按钮而不适用于所有按钮。您可以参考此页面:http://msdn.microsoft.com/en-us/library/ms227424.aspx 因此,通过这种方式,您可以指定验证仅适用于您拥有的提交按钮。

举个例子:

    <asp:textbox id="AgeTextBox" 
      runat="Server">
    </asp:textbox>
<br/>
    <asp:requiredfieldvalidator id="RequiredFieldValidator2"
      controltovalidate="AgeTextBox"
      validationgroup="PersonalInfoGroup"
      errormessage="Enter your age."
      runat="Server">
    </asp:requiredfieldvalidator>
<br/>
  <asp:button id="Button1" 
      text="Validate" 
      causesvalidation="true"
      validationgroup="PersonalInfoGroup"
      runat="Server" />

答案 1 :(得分:1)

首先,

这对于基于父值的下拉列表进行硬编码实际上是一种糟糕的方法。当您在代码中添加/删除项目时,将来很难维护。你可以做的是在你的数据库中创建一个单独的表&amp;使用与父表的外键关系将您的项目存储在该表中,如

   Tbl_Categories                         Tbl_Items
   ----------------------------           -----------------------------------
   CategoryID      Description            ItemID     CategID    Description
   ----------------------------           -----------------------------------
      1            Electronics              1          1        Mobiles
      2            Kitchen                  2          1        Tablets
      3            Books                    3          1        Laptops
      4            Beauty                   4          1        Accessories

然后,您只需定义下拉列表的数据源,以过滤父下拉列表的selectedValue。无需手动编码。您可以在此帖子中查看答案作为起点How to select dropdown lists with sql datasource

来到你的主要问题,

您可以在提交按钮&amp;上定义验证组。特别是验证控制。这使您只有在按下该按钮时才能调用验证。 Specifying Validation Groups on MSDN

<!--When Button1 is clicked, only validation
controls that are a part of PersonalInfoGroup
are validated.-->
<asp:button id="Button1" 
  text="Validate" 
  causesvalidation="true"
  validationgroup="PersonalInfoGroup"
  runat="Server" />

  <asp:requiredfieldvalidator id="RequiredFieldValidator3"
  controltovalidate="CityTextBox"
  validationgroup="PersonalInfoGroup"
  errormessage="Enter a city name."
  runat="Server">
</asp:requiredfieldvalidator>

答案 2 :(得分:1)

你有2个解决方案:

  1. 使用ValidationGroup属性来控制组以激活某些验证。
  2. 为4个导航按钮设置CausesValidation = false。