用MySQL阅读器填充一些下拉列表

本文关键字:下拉列表 填充 MySQL | 更新日期: 2023-09-27 18:14:12

我有10个DropDownLists (ddlQuestion1IDs, ddlQuestion2IDs, ddlQuestion3IDs…),我想用数据库中的数据填充。但是,下面的代码只填充ddlQuestion1IDs。为什么会这样?用相同的数据填充所有10个节点的最有效方法是什么?

protected void getQuestionIDs()
{
    string connStr = ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString;
    MySqlConnection conn = new MySqlConnection(connStr);
    MySqlDataReader reader;
    string cmdText = "SELECT * FROM questions WHERE module_id=@ModuleID";
    MySqlCommand cmd = new MySqlCommand(cmdText, conn);
    cmd.Parameters.Add("@ModuleID", MySqlDbType.Int32);
    cmd.Parameters["@ModuleID"].Value = ddlModules.SelectedValue;
    try
    {
        conn.Open();
        reader = cmd.ExecuteReader();
        for (int i = 1; i <= 10; i++)
        {
            var ddlQuestion = (DropDownList)FindControl("ddlQuestion" + i.ToString() + "IDs");
            ddlQuestion.DataSource = reader;
            ddlQuestion.DataValueField = "question_id";
            ddlQuestion.DataTextField = "question_id";
            ddlQuestion.DataBind();
            ddlQuestion.Items.Insert(0, new ListItem(string.Empty, "blank"));
        }
        reader.Close();
    }
    catch
    {
        lblError.Text = "Database connection error - failed to get question IDs.";
    }
    finally
    {
        conn.Close();
    }
}

用MySQL阅读器填充一些下拉列表

我的胡乱猜测是阅读器是基于流的,仅向前的,并且第一个绑定成功地迭代了数据,而随后的绑定发现数据流位于末尾。

我会尝试将数据复制到数组中,并尝试绑定到数组。我有个问题可能对你有帮助。

我可以重置和循环再次通过MySqlDataReader?