2015-09-23 63 views
0

我有一個簡單的Dropdownlist控件,JS處理, 一旦索引改變,div打開/關閉。用於初始化Dropdownlist-Asp.net - 回發失去Dropdownlist索引

HTML代碼

<select id="selectmethod" onchange="run()"> 
     <option value="1" selected="selected">option1</option> 
     <option value="2" >option2</option> 
    </select> 

的JavaScript代碼來處理的OnChange事件 -

 function run() { 
      var e = document.getElementById("selectmethod"); 
      var value = e.options[e.selectedIndex].value; 

      if (value == 1) { 

       $('#changecourseitems').slideUp(); 
       $('#addnewcourseitems').slideDown(); 
      } 
      if (value == 2) { 

       $('#addnewcourseitems').slideUp(); 
       $('#changecourseitems').slideDown(); 

      } 

現在,當用戶點擊<ASP:LinkButton ... /> 回發事件開始和下拉列表索引重置(如隱藏的div)。 如何在回發後維護Dropdownlist索引?

謝謝!

+0

你需要保持下拉列表指數?通常,ASP.NET會照顧到這一點。如果你想讓你的公開/封閉的div保持其狀態,那是另一個問題。 –

+0

我在帖子中描述了它,但是ASP.NET並沒有關心下拉列表索引,因爲每次點擊鏈接按鈕時它都會重置。 – Yakirbu

+0

您是否在代碼隱藏中設置了下拉列表的索引? –

回答

1

要維護下拉列表的內容,您必須每次重新將其填充到服務器上或使用viewstate。例如,您可以一次填充數據這樣

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     DropDownList1.Items.Add(new ListItem() { Text = "option1", Value = "1", Selected = true }); 
     DropDownList1.Items.Add(new ListItem() { Text = "option2", Value = "2" }); 
    } 
} 

,並在頁面,您可以使用ASP的控制,使視圖狀態:

<asp:DropDownList ID="DropDownList1" runat="server" EnableViewState="true"> 
</asp:DropDownList> 

現在的數據將被張貼來回會在客戶端維護

1

要保持該值,有多種方法。 1.將選擇更改爲服務器控件。
2.添加一個隱藏值並將您的選擇標記值保存到run()中的隱藏值。然後在document.ready()中設置選擇值 。

<asp:HiddenField ID="yourHiddenValue" runat="server" /> 

您的運行方法。

function run() { 
    var e = document.getElementById("selectmethod"); 
    var value = e.options[e.selectedIndex].value; 

    if (value == 1) { 

     $('#changecourseitems').slideUp(); 
     $('#addnewcourseitems').slideDown(); 
    } 
    if (value == 2) { 

     $('#addnewcourseitems').slideUp(); 
     $('#changecourseitems').slideDown(); 

    } 

    $('#<%=yourHiddenValue.ClientID%>').val(value); // <--- added 
}   

這是文件準備好功能。

$(function() { 
    var hiddenValue = $('#<%=yourHiddenValue.ClientID%>').val(); 
    $('#selectmethod').val(hiddenValue); 
} 
+0

但是div 'changecourseitems'每次點擊linkbutton都會關閉,我希望它保持打開狀態,因爲它應該在列表中的索引2中打開。 – Yakirbu

+0

你可能需要應用邏輯(顯示/隱藏)在文檔就緒功能 – g2000

0

如果你想堅持ASP.Net Web窗體控件的狀態,你想用的DropDownList服務器控件它採用的ViewState引擎蓋下。

<asp:DropDownList runat="server" ID="DropDownList1"> 
    <asp:ListItem Text="Add New Course" Value="1" /> 
    <asp:ListItem Text="Change Course" Value="2" /> 
</asp:DropDownList> 

<div id="changecourseitems">Change course</div> 
<div id="addnewcourseitems">Add new course</div> 

<asp:LinkButton ID="LinkButton1" runat="Server" OnClick="LinkButton1_Click" 
    Text="Submit" /> 

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
<script type="text/javascript"> 
    $(function() { 
     var selectMethod = function(){ 
      if ($('#<%= DropDownList1.ClientID %>').val() === '1') { 
       $('#changecourseitems').hide(); 
       $('#addnewcourseitems').slideDown(); 
      } else { 
       $('#addnewcourseitems').hide(); 
       $('#changecourseitems').slideDown(); 
      } 
     } 
     $('#<%= DropDownList1.ClientID %>').change(selectMethod); 
     selectMethod(); 
    }); 
</script> 
+0

我試着你是如何提到的,它維護着列表索引,但它仍然關閉應該在索引爲2時打開的div (例如)。我希望它保持索引,但也保持div可見。 – Yakirbu

0
<asp:DropDownList ID="selectmethod" ClientIDMode="Static" runat="server" EnableViewState="true"> 
    </asp:DropDownList> 

隨着的ClientIDMode =靜你保持ID,因爲它是指定在控制

您的js文件應該是:

$('#selectmethod').change(function() { 
    var value = $(this).val(); 

    if (value == 1) { 

     $('#changecourseitems').slideUp(); 
     $('#addnewcourseitems').slideDown(); 
    } 
    if (value == 2) { 

     $('#addnewcourseitems').slideUp(); 
     $('#changecourseitems').slideDown(); 

    } 
    });