2013-10-10 3 views
0

Я пытаюсь сделать правильный выбор в DropDownList ddlMealType с соответствующим значением в зависимости от выбора в DropDownList ddlMeals. Это отлично работает, когда я вручную выбираю пищу, но не тогда, когда страница изначально загружена (так как selectedIndex = -1 для ddlMeal).Set DropDownList.SelectedIndex в Page_Load

Поэтому я пытаюсь установить выбранный индекс в первую раздачу в списке в Page_Load, но при добавлении точки останова в следующую строку я вижу, что значение SelectedIndex равно -1. Невозможно ли программно установить свойство SelectedIndex в dropdownList?

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      ddlMeals.SelectedIndex = 0; 
      ddlMeals_SelectedIndexChanged(this, EventArgs.Empty); 
     } 
    } 

    protected void ddlMeals_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     // Fetch details for selected Meal 
     SqlDataReader reader = null; 
     String ConnectString = System.Configuration.ConfigurationManager.ConnectionStrings["Kunskapshjulet"].ConnectionString; 
     SqlConnection connection1 = new SqlConnection(ConnectString); 
     SqlCommand selectCommand = new SqlCommand("SELECT MealType FROM Meals WHERE MealID = " + ddlMeals.SelectedValue, connection1); 
     try 
     { 
      connection1.Open(); 
      reader = selectCommand.ExecuteReader(); 

      reader.Read(); 
      string strMealtype = reader[0].ToString(); 
       ddlMealTypes2.SelectedValue = reader[0].ToString(); 
     } 


     <asp:DropDownList ID="ddlMeals" runat="server" OnSelectedIndexChanged="ddlMeals_SelectedIndexChanged" 
         AutoPostBack="True" DataSourceID="SqlMealsPerUser" DataTextField="MealName" DataValueField="MealID" Width="180px"> 
     </asp:DropDownList> 

ответ

3

Вам необходимо связать данные в DropDownList перед установкой SelectedIndex в PageLoad

0

В коде ASPX, SqlMealsPerUser ваш источник данных ID. Есть ли в нем ценность? Я считаю, что только после завершения кода, стоящего за Page_Load, данные привязаны к элементу управления.

В этом случае, вы можете использовать

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      ddlMeals.DataSource=BindData(); // this function gets the data u need to bind to your drop down. 
      ddlMeals.DataBind(); 
      if(ddlMeals.Items.Count > 0) 
      { 
       ddlMeals.SelectedIndex = 0; 
       ddlMeals_SelectedIndexChanged(null, EventArgs.Empty); 
      } 
     } 
    } 
0

Para Hacer дие funcione эль SelectIndex де ООН DropDownList ан C#, сено дие llamar эль Evento де SelectIndexChanged де ла Siguiente Маньера:

protected void Page_Load(object sender, EventArgs e) 
    { 
    if (!IsPostBack) 
    { 
     ddlMeals.DataBind(); 
     if(ddlMeals.Items.Count > 0) 
     { 
      ddlMeals.SelectedIndex = 0; 
      ddlMeals_SelectedIndexChanged(null, EventArgs.Empty); 
     } 
    } 

Saludos !!

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