Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 打印在标签上的数据库下拉列表值_C#_Sql_Asp.net_Database_Dropdown - Fatal编程技术网

C# 打印在标签上的数据库下拉列表值

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

我正在使用ASP.net制作一个下拉菜单。下拉菜单链接到数据库,一切正常。如果在下拉列表中选择了一个值,则必须填充与数据库中的下拉列表值匹配的标签。 希望我说得清楚,以下是我目前掌握的情况:

    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语句。。。