簡體   English   中英

在Page_Load中設置DropDownList.SelectedIndex

[英]Set DropDownList.SelectedIndex in Page_Load

我想selet在DropDownList的正確選擇ddlMealType與取決於DropDownList中選擇適當的值ddlMeals 當我手動選擇一ddlMeal時,這很好用,但是最初加載頁面時卻沒有(因為ddlMeal selectedIndex = -1)。

因此,我嘗試將選定的索引設置為Page_Load中列表中的第一個Meal,但是在下一行添加斷點時,我可以看到SelectedIndex的值仍為-1。 是否無法以編程方式設置dropdownList的SelectedIndex屬性?

    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>

您需要在PageLoad中設置SelectedIndex之前將數據綁定到DropDownList。

在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);
            }
        }
    }

在C#中,通過SelectIndex更改了SelectIndex的功能,並在SelectIndexChanged的操作方法中添加了以下代碼:

  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);
        }
  }

禮炮!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM