Почему выбранная опция раскрывающегося списка не вызывает повторную обратную передачу?

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

  • Почему выбранное значение первого раскрывающегося списка, еще раз выбранное, не вызывает обратную передачу?

ИЗМЕНИТЬ:

 <asp:DropDownList ID="DLMatName" runat="server" OnSelectedIndexChanged="DlMeasurement_SelectedIndexChanged" AutoPostBack="true">
                                               </asp:DropDownList>


protected void DlMeasurement_SelectedIndexChanged(object sender, EventArgs e)
{

    if (DLMatName.SelectedIndex != 0)
    {
        DataTable dt = _materialInController.GetMeasurementsforMaterials(Convert.ToInt64(DLMatName.SelectedValue.ToString())).Tables[0];
        if (dt.Rows.Count > 1)
        {
            MeasurementTr.Visible = true;
            this.DlMeasurement.DataSource = dt;
            this.DlMeasurement.DataValueField = dt.Columns[0].ToString();
            this.DlMeasurement.DataTextField = dt.Columns[1].ToString();
            this.DlMeasurement.DataBind();
            this.DlMeasurement.Items.Insert(0, ListItem.FromString("Select"));
            this.LblMeasuremet.Visible = false;
            ErrorMsg.InnerHtml = "";             
        }
        else if (dt.Rows.Count == 1)
        {
            this.LblMeasuremet.Visible = true;
            this.LblMeasuremet.Text = dt.Rows[0].ItemArray[1].ToString();
            MeasurementTr.Visible = false;
            ErrorMsg.InnerHtml = "";       

        }
        else
        {

        }
    }
    else
    {
        MeasurementTr.Visible = false;
        this.LblMeasuremet.Visible = false;
        ErrorMsg.InnerHtml = "Select the materialType";
    }
    ScriptManager.RegisterClientScriptBlock(DLMatName, typeof(DropDownList), "Hideimage", "HideImageButtonDivforAdd();", true);

}

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


person bala3569    schedule 27.01.2010    source источник
comment
Размещение вашего кода было бы гораздо полезнее, а именно вашей разметки aspx.   -  person Nick Craver    schedule 27.01.2010
comment
Установлено ли для свойства AutoPostBack раскрывающегося списка значение true? Если это так, добавьте код к вашему вопросу.   -  person Robert W    schedule 27.01.2010
comment
Вы пытались закомментировать вызов ScriptManager.RegisterClientScriptBlock?   -  person RobS    schedule 27.01.2010
comment
После первой обратной передачи вы можете увидеть, есть ли в исходном коде страницы событие JScript, связанное с DropList?   -  person RobS    schedule 27.01.2010
comment
Я удалил событие javascript... оно начало работать... спасибо....   -  person bala3569    schedule 27.01.2010


Ответы (1)


Вы перепривязываете второй раскрывающийся список при каждой обратной передаче страницы, т.е. в вашем событии Page_Load есть ли у вас какой-либо код, подобный этому:

protected void Page_Load(object sender, EventArgs e)
{
      if (DropDown1.SelectedIndex > 0)
      {
          // Rebind the second dropdown. 
      }
}

Если это так, то вам не хватает проверки, чтобы увидеть, отправляет ли страница обратно саму себя (Page.IsPostBack), и это может вызвать вашу проблему.

person Robert W    schedule 27.01.2010