【发布时间】:2014-09-13 04:03:34
【问题描述】:
我有 10 个 DropDownLists(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();
}
}
【问题讨论】:
-
为什么不使用单个变量而不是始终搜索同一个控件?这会更有效,而且——更重要的是——更具可读性。
var ddlQuestion = (DropDownList)FindControl("ddlQuestion" + i.ToString() + "IDs"); // set all properties... -
@TimSchmelter 已修改。谢谢,尽管当我真正想要填充所有十个时,仍然只有第一个 DropDownList 被填充。
-
我会使用
MySqlDataAdapter来填充DataTable并将其用作DataSource。
标签: c# mysql asp.net loops drop-down-menu