我正在尝试使用batabase中的数据填充pageload上的下拉列表。
填充时我希望下拉项(<option>
)的显示文字与value
<option>
”不同
例如:下拉列表将在UI上显示“标题”(来自db的列)作为文本,但value
的“<option>
”应为“ID”(来自db的列)
我如何实现这一目标?
目前我的代码是这样的:(drpReleaseTitle
是下拉列表的ID)
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
SqlConnection con1 = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);
con1.Open();
SqlCommand releaseTitlecmd = new SqlCommand("select Title from LWMDemo_ReleaseInfo order by ReleaseID", con1);
SqlDataReader releaseTitledr = releaseTitlecmd.ExecuteReader();
while (releaseTitledr.Read())
{
drpReleaseTitle.Items.Add(releaseTitledr.GetValue(0).ToString());
}
con1.Close();
}
}
答案 0 :(得分:0)
试试这个
drpReleaseTitle.Items.Add(new ListItem("yourtext", "yourvalue"));
答案 1 :(得分:0)
最好使用数据集而不是数据读取器,因为它使用断开连接的体系结构,因此您可以在关闭连接后使用
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
SqlConnection con1 = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);
con1.Open();
SqlCommand releaseTitlecmd = new SqlCommand("select Title from LWMDemo_ReleaseInfo order by ReleaseID", con1);
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = Cmd;
sda.Fill(ds);
if(ds!=null && ds.table.count>0){
if(ds.table[0]!=null && ds.table[0].rows.count>0){
drpReleaseTitle.DataSource=ds.table[0].Title; //Title Column
drpReleaseTitle.DataSourceID=ds.table[0].ID; //ID Column
}
}
con1.Close();
}
}
答案 2 :(得分:0)
如果您尝试在下拉列表中的项目中添加字符串,它将创建一个项目,该项目将包含文本和值作为您的字符串。您需要添加新的ListItem。 ListItem包含带有text和value作为参数的构造函数。有关此课程的更多信息,请阅读here