2016-08-01 1 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; 
     } 
    } 

} 

Я думаю, что что-то не так с загрузкой страницы, мой второй выпадающий список зависит от 1-го списка выпадающего списка.C# 2-ый список отказов сохраняет значение при отправке

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

каждый раз, когда я отправляю данные в базу данных, значение для второго выпадающего списка всегда 1-го значения.

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

Также обратите внимание, что вы можете необходимо заполнить второе выпадающее меню на SelectedIndexChange dllselection и установить AutoPostBack из dllselection true.

+0

не работает, 2-й выпадающий список не показывает никаких данных и enable = "false"; – KyLim

+0

показать нам код filldropdown, а также код выпадающего списка? – Adil

+0

попробовал ваш код, 2-й выпадающий список данных пуст :( – 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

2-й данные еще 1-й выбор во время отправки – KyLim

+0

@KyLim - проблема решена –

+0

нет, все еще проблема :( – KyLim

0

Попробуйте загрузить метод в

if (!Page.IsPostBack) 
    { 

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

Update:

Вам необходимо заполнить второе выпадающее меню на SelectedIndexChange dllselection и необходимо установить AutoPostBack = true из dllselection.

+0

2-й выпадающий список пустых данных – KyLim

1

Попробуйте это:

если {

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

добавить OnSelectedIndexChanged = "dllselection_SelectedIndexChanged" на мой 1-й DropDownList (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); 

     } 
    } 
Смежные вопросы