C# 打印在标签上的数据库下拉列表值
我正在使用ASP.net制作一个下拉菜单。下拉菜单链接到数据库,一切正常。如果在下拉列表中选择了一个值,则必须填充与数据库中的下拉列表值匹配的标签。 希望我说得清楚,以下是我目前掌握的情况:C# 打印在标签上的数据库下拉列表值,c#,sql,asp.net,database,dropdown,C#,Sql,Asp.net,Database,Dropdown,我正在使用ASP.net制作一个下拉菜单。下拉菜单链接到数据库,一切正常。如果在下拉列表中选择了一个值,则必须填充与数据库中的下拉列表值匹配的标签。 希望我说得清楚,以下是我目前掌握的情况: protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) { OleDbConnection conn = new OleDbConnection(); conn
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
OleDbConnection conn = new OleDbConnection();
conn.Open();
conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + Server.MapPath(@"\App_Data") + @"\JipEnJanneke.mdb";
OleDbCommand cmd1 = new OleDbCommand("Select (Prijs, Jaartal, ISBN) from JipEnJanneke where Titel = @Titel", conn);
cmd1.Parameters.AddWithValue("@Titel", DropDownList1.SelectedValue.ToString());
OleDbDataReader rd = cmd1.ExecuteReader();
while (rd.Read())
{
lbl_Prijs.Text = rd["Prijs"].ToString();
lbl_Jaar.Text = rd["Jaartal"].ToString();
lbl_Isbn.Text = rd["ISBN"].ToString();
}
conn.Close();
不幸的是,这使得标签为空。如果我把这个函数添加到我的页面中,标签确实会被填满,但由于某种原因,只有下拉列表中的第一个值会被填满。这里有一篇类似的帖子建议将它推到selectindexchanged中,但这让我觉得它是空的。有人有主意吗
现在是我的页面加载事件
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + Server.MapPath(@"\App_Data") + @"\JipEnJanneke.mdb";
//conn.ConnectionString = "Provider=Microsoft.JET.OLEDB.4.0; Data Source=" + Server.MapPath(@"\App_Data") + @"\JipEnJanneke.mdb";
lblConnectionFeedback.Text = "";
try
{
conn.Open();
lblConnectionFeedback.Text += "Connection is: " + conn.State.ToString();
// HIER QUERY
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
cmd.CommandText = "SELECT * FROM Boeken";
OleDbDataReader rd = cmd.ExecuteReader();
DropDownList1.DataSource = rd;
DropDownList1.DataTextField = "Titel";
DropDownList1.DataValueField = "Titel";
DropDownList1.DataBind();
rd.Close();
conn.Close();
}
catch (Exception exc)
{
lblConnectionFeedback.Text = exc.Message;
}
finally
{
conn.Close();
lblConnectionFeedback.Text += "<br />Connection is: " + conn.State.ToString();
}
OleDbConnection conn=新的OleDbConnection();
conn.ConnectionString=“Provider=Microsoft.ACE.OLEDB.12.0;数据源=“+Server.MapPath(+@“\App\u Data”)+@“\JipEnJanneke.mdb”;
//conn.ConnectionString=“Provider=Microsoft.JET.OLEDB.4.0;数据源=“+Server.MapPath”(@“\App\u Data”)+@“\JipEnJanneke.mdb”;
lblConnectionFeedback.Text=“”;
尝试
{
conn.Open();
lblConnectionFeedback.Text+=“连接是:”+conn.State.ToString();
//层次查询
OleDbCommand cmd=新的OleDbCommand();
cmd.Connection=conn;
cmd.CommandText=“从Boeken选择*”;
OleDbDataReader rd=cmd.ExecuteReader();
DropDownList1.DataSource=rd;
DropDownList1.DataTextField=“Titel”;
DropDownList1.DataValueField=“Titel”;
DropDownList1.DataBind();
rd.Close();
康涅狄格州关闭();
}
捕获(异常exc)
{
lblConnectionFeedback.Text=exc.Message;
}
最后
{
康涅狄格州关闭();
lblConnectionFeedback.Text+=“
连接为:“+conn.State.ToString();
}
请检查DropDownList1的AutoPostBack属性是否设置为True。在加载事件和下拉列表中的代码\u selectedindexchanged中,检查页面的IsPostBack。例:
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
if (IsPostBack){
OleDbConnection conn = new OleDbConnection();
conn.Open();
conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + Server.MapPath(@"\App_Data") + @"\JipEnJanneke.mdb";
OleDbCommand cmd1 = new OleDbCommand("Select (Prijs, Jaartal, ISBN) from JipEnJanneke where Titel = @Titel", conn);
cmd1.Parameters.AddWithValue("@Titel", DropDownList1.SelectedValue.ToString());
OleDbDataReader rd = cmd1.ExecuteReader();
while (rd.Read())
{
lbl_Prijs.Text = rd["Prijs"].ToString();
lbl_Jaar.Text = rd["Jaartal"].ToString();
lbl_Isbn.Text = rd["ISBN"].ToString();
}
conn.Close();
}
}
负载:
if (!IsPostBack){
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + Server.MapPath(@"\App_Data") + @"\JipEnJanneke.mdb";
//conn.ConnectionString = "Provider=Microsoft.JET.OLEDB.4.0; Data Source=" + Server.MapPath(@"\App_Data") + @"\JipEnJanneke.mdb";
lblConnectionFeedback.Text = "";
try
{
conn.Open();
lblConnectionFeedback.Text += "Connection is: " + conn.State.ToString();
// HIER QUERY
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
cmd.CommandText = "SELECT * FROM Boeken";
OleDbDataReader rd = cmd.ExecuteReader();
DropDownList1.DataSource = rd;
DropDownList1.DataTextField = "Titel";
DropDownList1.DataValueField = "Titel";
DropDownList1.DataBind();
rd.Close();
conn.Close();
}
catch (Exception exc)
{
lblConnectionFeedback.Text = exc.Message;
}
finally
{
conn.Close();
lblConnectionFeedback.Text += "<br />Connection is: " + conn.State.ToString();
}
}
if(!IsPostBack){
OleDbConnection conn=新的OleDbConnection();
conn.ConnectionString=“Provider=Microsoft.ACE.OLEDB.12.0;数据源=“+Server.MapPath(+@“\App\u Data”)+@“\JipEnJanneke.mdb”;
//conn.ConnectionString=“Provider=Microsoft.JET.OLEDB.4.0;数据源=“+Server.MapPath”(@“\App\u Data”)+@“\JipEnJanneke.mdb”;
lblConnectionFeedback.Text=“”;
尝试
{
conn.Open();
lblConnectionFeedback.Text+=“连接是:”+conn.State.ToString();
//层次查询
OleDbCommand cmd=新的OleDbCommand();
cmd.Connection=conn;
cmd.CommandText=“从Boeken选择*”;
OleDbDataReader rd=cmd.ExecuteReader();
DropDownList1.DataSource=rd;
DropDownList1.DataTextField=“Titel”;
DropDownList1.DataValueField=“Titel”;
DropDownList1.DataBind();
rd.Close();
康涅狄格州关闭();
}
捕获(异常exc)
{
lblConnectionFeedback.Text=exc.Message;
}
最后
{
康涅狄格州关闭();
lblConnectionFeedback.Text+=“
连接为:“+conn.State.ToString();
}
}
我越来越接近了,但是现在我在第120行得到了一个错误,即OleDbDataReader rd=cmd1.ExecuteReader();行在我选择的索引处。但是我需要保留它,因为while语句。。。