2015-02-12 2 views
1

Я не могу получить раскрывающийся список asp: in my usercontrol для обратной передачи, чтобы обновить количество дней.asp: dropdownlist в моем usercontrol wont postback onselectedindexchanged

UserControl:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Profile.ascx.cs" Inherits="TestApp2.Views.Profile" %> 


<asp:UpdatePanel ID="ProfileMainUpdatePanel" runat="server"> 
     <ContentTemplate> 
      <div class="form-group profile-form"> 
       <asp:DropDownList runat="server" id="selYear" class="form-control profile-date right-align" OnSelectedIndexChanged="selYear_SelectedIndexChanged" /> 
       <asp:DropDownList runat="server" id="selMonth" class="form-control profile-date right-align" OnSelectedIndexChanged="selMonth_SelectedIndexChanged" /> 
       <asp:DropDownList runat="server" id="selDay" class="form-control profile-date right-align"/> 
       <asp:label runat="server" class="control-label right-align profile-form-label" for="selDay" Text="Date of Birth" ID="temp" /> 
      </div> 
     </ContentTemplate> 
</asp:UpdatePanel> 

И код за

public void fillDays() 
    { 
     selDay.Items.Clear(); 
     //getting numbner of days in selected month & year 
     int noofdays = DateTime.DaysInMonth(Convert.ToInt32(selYear.SelectedValue), Convert.ToInt32(selMonth.SelectedValue)); 

     //Fill days 
     for (int i = 1; i <= noofdays; i++) 
     { 
      selDay.Items.Add(i.ToString()); 
     } 
     selDay.Items.FindByValue(System.DateTime.Now.Day.ToString()).Selected = true;// Set current date as selected 

    } 

    protected void selMonth_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     temp.Text = "here"; 
     fillDays(); 
    } 

    protected void selYear_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     temp.Text = "there"; 
     fillDays(); 
    } 

Все устанавливает штраф на странице загрузки, но этот обратный вызов немного не срабатывает, даже текст метки Безразлично» t изменение.

Я также пытался работать его на стороне клиента с добавлением их к щёток установки

selYear.Attributes.Add("onchange", "fillDays();"); 
selMonth.Attributes.Add("onchange", "fillDays();"); 

код клиента, как:

<script type="text/javascript"> 

function fillDays() { 
    alert("yes"); 
} 

Это не срабатывает ни.

ответ

1

Чтобы получить событие SelectedIndexChanged, вам необходимо установить AutoPostBack="true", значение по умолчанию для DropDownList - false.

<asp:DropDownList runat="server" id="selYear" AutoPostBack="true" class="form-control profile-date right-align" OnSelectedIndexChanged="selYear_SelectedIndexChanged" /> 

AutoPostBack

Получает или задает значение, указывающее, является ли автоматически происходит обратная передача на сервер , когда пользователь изменяет выбор списка, MSDN.

+0

Coulda поклясться я уже пробовал ... ааа я все еще был attribute.add после того, как я удалил, что он работал с AutoPostBack. – colobusgem

+0

Работает ли он сейчас? – Adil

+0

Это было. но после вставки его в мой настоящий пользовательский контроль он либо не работает, либо по какой-то причине также клонирует номера месяца и года. Я проверил, и page_load не запускается снова, поэтому звонок является частичным обновлением, а также метод, который заполняет месяц и день, также не переустанавливается после активной загрузки (как это должно быть), тем не менее, клонируется каждый раз, когда я вызываю событие selectedchanged для любого из них. – colobusgem

0
try this in Update Panel. Hope its working... 


    <asp:UpdatePanel ID="ProfileMainUpdatePanel" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true"> 
    <ContentTemplate> 
     <div class="form-group profile-form"> 
      <asp:DropDownList runat="server" id="selYear" class="form-control profile-date right-align" OnSelectedIndexChanged="selYear_SelectedIndexChanged" /> 
      <asp:DropDownList runat="server" id="selMonth" class="form-control profile-date right-align" OnSelectedIndexChanged="selMonth_SelectedIndexChanged" /> 
      <asp:DropDownList runat="server" id="selDay" class="form-control profile-date right-align"/> 
      <asp:label runat="server" class="control-label right-align profile-form-label" for="selDay" Text="Date of Birth" ID="temp" /> 
     </div> 
    </ContentTemplate> 

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