2014-05-05 76 views
0

我有一個aspx頁面。Dropdownlist按鈕提交失敗值

DROPDOWN的選定值丟失。

當我點擊搜索,我可以執行服務器端事件,並返回到一切正常工作的頁面。當我按更新時,可悲的是,我的組合框丟失了他們的價值。我有enbabledViewState爲母版頁,當前頁面,甚至所有的控件真。任何想法如何我可以開始接近這個?到達page_load事件時,這些值已消失。沒有其他生命週期事件。

Page_Load() 
{ 
    if(!PostBack) 
    { 
    //Populate a dropdown. 
    This is where the dropdown is safely populated. 
    } 
} 

btnClickSearch() 
{ 
} 

btnClickUpdate() 
{ 
} 

頁面上的兩個按鈕。

不工作

<asp:Button id="btnUpdate" class="fg-button ui-state-default ui-corner-all" runat="server" Text="Update" onclick="btnClick_Update" onclientclick="return updateNotes();" style="width:auto;"/> 

WORKING

<asp:Button id="A2" runat="server" onclick="btnClick_Submit" OnClientClick="return searchNotes();" class="fg-button ui-state-default ui-corner-all" style="float: left; margin-left: 20px; width:auto;" Text="Search"></asp:Button> 

的onclient單擊事件兩個按鈕調用blockUI並返回true。任何想法爲什麼這些行爲會有所不同?

此外,沒有任何下拉項目具有重複值。

+0

你的意思是你按下了更新,下拉選擇的值恢復爲默認這是第一個,但不是你之前選擇的一個後? –

+0

提交按鈕正常工作。當我按更新時,我的組合框的選定值將丟失。應用程序不知道選擇了什麼。 – WebSight

回答

0

我有兩個控件。

Button1和button2。按鈕1工作正常。按鈕2確實稱它爲服務器端事件,但是當發生這種情況時,我們得到一個CKEditor的dissasembly。

我有一個包含CKEditor和一個asp按鈕的jQuery UI對話框。點擊此按鈕時,服務器端的所有值都將丟失,並顯示反彙編。

<script type="text/javascript" src="ckeditor/ckeditor.js"></script> 
<script type="text/javascript" src="ckeditor/custom/dialog-patch.js"></script> 

<span style="width: 500px; height: 100%"> 
      <CKEditor:CkEditorControl id="CKEditor1" runat="server" AutoPostBack="false"> 
      </CKEditor:CkEditorControl> 
</span> 

定義

$(function() { 
      // to load editor 
      CKEDITOR.on('dialogDefinition', function(ev) { 

       // Take the dialog name and its definition from the event 
       // data. 
       var dialogName = ev.data.name; 
       var dialogDefinition = ev.data.definition; 

       // Check if the definition is from the dialog we're 
       // interested on (the "Link" dialog). 
       if (dialogName == 'link') { 
        // remove contents 
        dialogDefinition.removeContents('target'); 
        dialogDefinition.removeContents('upload'); 
        dialogDefinition.removeContents('advanced'); 
        // Get a reference to the "Link Info" tab. 
        var infoTab = dialogDefinition.getContents('info'); 

        // Remove the "Link Type" combo and the "Browser 
        // Server" button from the "info" tab. 
        infoTab.remove('linkType'); 
        infoTab.remove('browse'); 
       } 
       else if (dialogName == 'table') { 
        // Get a reference to the default tab. 
        var infoTab = dialogDefinition.getContents('info'); 
        infoTab.remove('selHeaders'); 
        infoTab.remove('txtHeight'); 
        infoTab.remove('txtCellSpace'); 
        infoTab.remove('txtCellPad'); 
        infoTab.remove('txtCaption'); 
        infoTab.remove('txtSummary'); 
        infoTab.remove('cmbAlign'); 
       } 
      }); 
     }); 

功能打開包含CKEditor的對話框。

function EditDialog(element,supplier,codeId,name, category,categoryCode, noteId,templateText) { 
      var numberOfNotes = $(element).parent().children('.text').length; 
      var noteBody = ""; 
      if (numberOfNotes == 1) { 
       noteBody = $(element).parent().children('.text').html(); 
      } 
      if (noteBody == "") { 
       noteBody = templateText; 
      } 
      $('#<%=esupplier.ClientID %>').val(supplier); 
      $('#<%=ename.ClientID %>').val(name); 
      $('#<%=enotecategory.ClientID %>').val(category); 
      $('#<%=hfCategoryCode.ClientID %>').val(categoryCode); 
      $('#<%=hfNoteID.ClientID %>').val(noteId); 
      $('#<%=hfIdCode.ClientID %>').val(codeId); 
      var dialogeditcontainer = $('#editdialog').dialog('open'); 
      dialogeditcontainer.parent().appendTo(jQuery('form:first')); 
      CKEDITOR.instances[$('#editorName').val()].setData(noteBody); 
      return false; 
     } 

定義

$(function() { 
      // to load editor 
      CKEDITOR.on('dialogDefinition', function(ev) { 

       // Take the dialog name and its definition from the event 
       // data. 
       var dialogName = ev.data.name; 
       var dialogDefinition = ev.data.definition; 

       // Check if the definition is from the dialog we're 
       // interested on (the "Link" dialog). 
       if (dialogName == 'link') { 
        // remove contents 
        dialogDefinition.removeContents('target'); 
        dialogDefinition.removeContents('upload'); 
        dialogDefinition.removeContents('advanced'); 
        // Get a reference to the "Link Info" tab. 
        var infoTab = dialogDefinition.getContents('info'); 

        // Remove the "Link Type" combo and the "Browser 
        // Server" button from the "info" tab. 
        infoTab.remove('linkType'); 
        infoTab.remove('browse'); 
       } 
       else if (dialogName == 'table') { 
        // Get a reference to the default tab. 
        var infoTab = dialogDefinition.getContents('info'); 
        infoTab.remove('selHeaders'); 
        infoTab.remove('txtHeight'); 
        infoTab.remove('txtCellSpace'); 
        infoTab.remove('txtCellPad'); 
        infoTab.remove('txtCaption'); 
        infoTab.remove('txtSummary'); 
        infoTab.remove('cmbAlign'); 
       } 
      }); 
     }); 

最後兩個ASPX按鈕。第一個工作,第二個不工作。第二個按鈕位於與ckeditor的對話框中。

這是一個作品。

<asp:Button id="A2" runat="server" onclick="btnClick_Submit" OnClientClick="return searchNotes();" class="fg-button ui-state-default ui-corner-all" style="float: left; margin-left: 20px; width:auto;" Text="Search"></asp:Button> 

這一個不

<asp:Button id="btnUpdate" runat="server" onclick="btnClick_Update" onclientclick="return updateNotes();" style="width:auto;" Text="Update" class="fg-button ui-state-default ui-corner-all" /> 

這兩個事件的OnClientClick呼叫BlockUI返回true。

Disassembly

-1

嘗試填充,如果它是一個回傳以及..

if(!Page.IsPostBack || Page.IsPostBack) 
{ 
//Populate a dropdown. 
This is where the dropdown is safely populated. 
} 

參考... Page.IsPostBack Property

+0

爲什麼你不去除這個條件?當它總是返回true時,無需進行「if」檢查。 –

+0

這將如何幫助我保留用戶選擇的下拉值?這將重新填充並重置所有控件。 – WebSight

+0

@ codeman061988這是選定的值丟失,而不是內容。 – WebSight

3

也許你可以試試按下更新按鈕後設置會話的選擇之一:

btnClickUpdate() 
{ 
    Session["DDLValue"] = dropdownlist.SelectedValue; 
} 

在頁面加載時,獲取會話並將其設置爲下拉列表(如果它不是NULL):

if(Session["DDLValue"] != null) 
{ 
    dropdownlist.SelectedValue = Session["DDLValue"].ToString(); 
} 

以下鏈接將幫助:Set selected value for drop down list

+0

我想保留選定的值。 – WebSight

+0

我們似乎也在按鈕點擊事件之前點擊了page_load。 ??? – WebSight

+0

對不起,在按鈕點擊事件之前點擊頁面加載意味着什麼?你的意思是你收到錯誤信息,因爲會話爲空? –