2016-08-01 56 views
0
protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Page.IsPostBack) 
    { 

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

} 

我认为有一些页面加载错误,c#第二dropdownlist失败保留提交时的值

<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> 

我每次向数据库提交传递数据时,第二个dropdownlist的值总是第一个值。

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(); 

} 
+0

尝试加载方法!的IsPostBack – Webruster

+0

需要方法添加onindexchanged来的首次下降downlist,然后在该事件中,您需要填写第二个下拉列表,然后提交,你需要添加一个新的事件到第一个下拉列表 –

回答

1

如果您想保留选择,您可以在回发中填写下拉列表。使用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的第二个下拉列表,并且需要设置的dllselection为true。

+0

不起作用,第二个dropdownlist没有显示任何数据并启用=“false”; – KyLim

+0

告诉我们代码的filldropdown,也是代码下拉? – Adil

+0

试过你的代码,第二下拉列表数据为空:( – KyLim

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

保护无效的Page_Load(对象发件人,EventArgs的) {

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

} 
+0

第二个数据仍然是提交期间的第一选择 – KyLim

+0

@KyLim是问题解决了 –

+0

不,仍然有问题:( – KyLim

0

尝试加载方法

if (!Page.IsPostBack) 
    { 

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

更新:

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

+0

第二个dropdownlist为空数据 – KyLim

1

试试这个:

如果 {

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

添加OnSelectedIndexChanged = “dllselection_SelectedIndexChanged” 我的第一个下拉列表(的IsPostBack!)。

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

     } 
    }