2016-01-08 18 views
0

我在UpdatePanel中使用DropDownList。當用戶在文本框中寫入一些文本並單擊「開始」按鈕時,它會填充。asp:dropDownList datasource在提交後,當在ASP中聲明時爲空:UpdatePanel

XAML是如下:

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
     <asp:TextBox ID="ODSearchTB" runat="server" ClientIDMode="Static"></asp:TextBox> 
     <asp:Button ID="ODFindButton" 
      class="btn btn-default goButton" 
      runat="server" Text="Go" 
      ClientIDMode="Static" 
      UseSubmitBehavior="False" 
      CausesValidation="False" 
      OnClick="ODFindButton_Click" /><br/> 
     <asp:DropDownList ID="ODSearchDDL" runat="server" Visible="False" AutoPostBack="True"></asp:DropDownList> 
    </ContentTemplate> 
</asp:UpdatePanel> 

和背後的代碼填寫在點擊DropDownList的:

protected void ODFindButton_Click(object sender, EventArgs e) 
{ 
    var res = ServiceUnitOfWork.MedicalOffices.FindMedicalOfficesByName(
     ODSearchTB.Text, 
     doctor: false, 
     hospital: true, 
     service: false, 
     establishment: true); 
    List<LightMedicalOffice> source = getLightMedicalOffices(res.ToList()); 

    ODSearchDDL.DataSource = source; 
    ODSearchDDL.DataTextField = "Name"; 
    ODSearchDDL.DataValueField = "IdAddress"; 
    ODSearchDDL.DataBind(); 
    ODSearchDDL.Visible = true; 
} 

也能正常工作,數據源將正確地更新和DropDownList的將被填補,更新(在UpdatePanel中)沒有頁面重新加載。提交表單時出現問題:Page_Load事件中的DropDownList爲空(數據源爲空),因此,當我到達Submit_ClickCustomValidator_ServerValidate事件時,我無法知道列表的選定值是什麼。

ViewState似乎在頁面和控件上都啓用。我不知道什麼會導致這樣的行爲。

回答

0

您是否重置Page_Load事件中的DropDown?我在上面實現了你的代碼,並在更新面板之外添加了一個提交按鈕。我能夠在提交按鈕的OnClick事件中捕獲DropDown控件的值。

+0

不,我不知道。 I4ve嘗試使用'var val = dropdownlist.DataSource'在Page_Load的第一行捕獲值,並且在提交後此時它已經爲空。 – WizLiz

+0

你爲什麼要捕獲數據源?如果你正在捕獲值:ODSearchDDL.SelectedValue。 –

+0

嗯,我試圖捕獲dropDownList的任何屬性,它是空的,selectedvalue是「」。 – WizLiz