c# - 使用 MySQL reader 填充多个 DropDownList

标签 c# mysql asp.net loops drop-down-menu

我有 10 个 DropDownList(ddlQuestion1IDs、ddlQuestion2IDs、ddlQuestion3IDs...),我想用数据库中的数据填充它们。但是,以下代码仅填充 ddlQuestion1ID。这是为什么?用相同数据填充所有 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();
    }
}

最佳答案

我的大胆猜测是,读取器是基于流的、仅向前的,并且第一个绑定(bind)成功地迭代数据,而后续绑定(bind)发现数据流位于末尾。

我会尝试将数据复制到数组中并尝试绑定(bind)到该数组。这是一个可能有帮助的问题。

Can I reset and loop again through MySqlDataReader?

关于c# - 使用 MySQL reader 填充多个 DropDownList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24885609/

相关文章:

php - PDO列变量像KE查询QUOTES

c# - 如何将 Excel 中的命名范围与 OleDB 一起使用?

asp.net mvc 4 设置viewbag链接

asp.net - 如何将 IIS 应用程序池从 x64 更改为 x86

C# dll,可与 php 和 java 互操作

c# - 按属性合并列表中的元素

php - yii mssql 查询不工作

php - 使用搜索关键字获取两个表

c# - Windows 运行时 : How to set image in a ellipse shape button?

c# - 使用 json.net/webapi 在 C# 中反序列化只获取属性