c#2nd dropdownlist fail在提交时保留值

时间:2016-08-01 06:27:56

标签: c# asp.net

protected void Page_Load(object sender, EventArgs e)
{
    if (Page.IsPostBack)
    {

        filldropdown(dllselection.SelectedValue);
        Code.Enabled = true;
        if(dllselection.SelectedValue=="")
        {
            Code.Enabled = false;
        }
    }

}

我认为页面加载有问题,我的第二个下拉列表取决于第一个下拉列表选择。

<div class="form-group">
    <div class="form-group">
        <label for="inputEmail3" class="col-sm-2 control-label"  style="color:black" >Main Category</label>
        <div class="col-sm-3">
            <asp:DropDownList ID="dllselection" runat="server" CssClass="form-control" AutoPostBack="true" required>
                <asp:ListItem Text="Please Select" Value=""></asp:ListItem>
                <asp:ListItem Text="HR" Value="M_1"></asp:ListItem>
                <asp:ListItem Text="IT" Value="M_2"></asp:ListItem>
               <asp:ListItem Text="Maintenance" Value="M_3"></asp:ListItem>
            </asp:DropDownList>
        </div>
        </div>

      <div class="form-group">
       <label for="Training" style="color:black" class="col-sm-2 control-label">Sub Category</label>
        <div class="col-sm-3">
            <asp:DropDownList ID="Code" Enabled="false" onchange="javascript:return dropdown(this);" runat="server" CssClass="form-control"  ValidationGroup="G1" required></asp:DropDownList>
        </div>
        </div>
每次我将传递数据提交到数据库时,第二个下拉列表的值总是第一个值。

 public void filldropdown(string item)
{

        int loggedUserID = Convert.ToInt32(Session["loggedUserID"]);
        List<BOL.UserInfo> userslist = new UserInfos().List();
        BOL.UserInfo loggeduser = userslist.Where(x => x.UserID == loggedUserID).FirstOrDefault();
        //  int ID = 10;

        List<e_request> role = new e_requests().dropdownlistG(loggeduser.SUBSIDIARY_CD, item);
        Code.DataSource = role;
        Code.DataTextField = "CAT_DESC";
        Code.DataValueField = "SUB_CAT";
        Code.DataBind();

}

5 个答案:

答案 0 :(得分:2)

如果你想继续选择,你可以在回发时填写下拉菜单。使用!Page.IsPostBack代替Page.IsPostBack

更改

if (Page.IsPostBack)
{

if (!Page.IsPostBack)
{

更多的事情你可能需要把条件放在一边!Page.IsPostBack因为你需要它在回发上执行

if (!Page.IsPostBack)
{
   filldropdown(dllselection.SelectedValue);
}

Code.Enabled = true;
if(dllselection.SelectedValue=="")
{
        Code.Enabled = false;
}

另请注意,您可能需要填写dllselection SelectedIndexChange的第二个下拉列表,并且需要设置AutoPostBack dllselection为真。

答案 1 :(得分:1)

试试这个:

if(!IsPostBack)             {

            if (dllselection.SelectedValue == "")
            {
                Code.Enabled = false;
            }
            else
            {
                Code.Enabled = true;
                filldropdown(dllselection.SelectedValue);  
            }
        }

答案 2 :(得分:0)

  <asp:DropDownList ID="logList" runat="server" AutoPostBack="True" 
        onselectedindexchanged="itemSelected">
    </asp:DropDownList> 

protected void Page_Load(object sender,EventArgs e)     {

if(!Page.IsPostBack){
       filldropdown(dllselection.SelectedValue);       
       Code.Enabled = true;
        if(dllselection.SelectedValue=="")
        {
            Code.Enabled = false;
        }
}

}

答案 3 :(得分:0)

尝试在

中加载方法
if (!Page.IsPostBack)
    {

        filldropdown(dllselection.SelectedValue);
        Code.Enabled = true;
        if(dllselection.SelectedValue=="")
        {
            Code.Enabled = false;
        }
    }

<强>更新

您需要填写dllselection SelectedIndexChange的第二个下拉列表,并需要设置AutoPostBack = true dllselection。

答案 4 :(得分:0)

将OnSelectedIndexChanged =“dllselection_SelectedIndexChanged”添加到我的第一个下拉列表中。

 protected void dllselection_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (dllselection.SelectedIndex == 0)
        {
            Code.Enabled = false;
        }
        else
        {
            Code.Enabled = true;
            //fill Code
            filldropdown(dllselection.SelectedValue);

        }
    }