DropDownList中的选定值将反映在DataList中

时间:2016-12-08 07:27:24

标签: c# asp.net

我正在尝试创建一个Web应用程序,该应用程序将使用DropDownList让用户选择某个值,并使用DataList来显示某些数据。例如,如果用户从DropDownList中选择一个值,则只应在DataList中显示与用户所选值相关的数据。我是ASP.NET和C#的新手。

以下代码是我在代码隐藏文件中实现的代码。目前我收到ArgumentException错误,我不知道如何解决此问题。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
using System.Configuration;


public partial class Products : System.Web.UI.Page
{
    SqlDataAdapter adapter;
    DataSet dset;
    string connstring = "Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|@Registration.mdf;Integrated Security=True";
    string sql = "select * from Products";
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            adapter = new SqlDataAdapter(sql, connstring); //<--ArgumentException error occurs here
            dset = new DataSet();
            adapter.Fill(dset);
            DropDownList1.DataSource = dset.Tables[0];
            DropDownList1.DataTextField = "CategoryName";
            DropDownList1.DataValueField = "ProductID";
            DropDownList1.DataBind();
            DataListBind();
        }
    }

    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        DataListBind();
    }
    public void DataListBind()
    {
        adapter = new SqlDataAdapter("select * from Products where ProductID=" + DropDownList1.SelectedValue + "", connstring);
        dset = new DataSet();
        adapter.Fill(dset);
        dlProducts.DataSource = dset.Tables[0];
        dlProducts.DataBind();
    }
}

2 个答案:

答案 0 :(得分:0)

问题是你的连接字符串。如果你看一下你得到的内部异常,就说:

  

key&#39; attachdbfilename&#39;

的值无效

post对此事提供了进一步的帮助。

要摆脱异常,只需在字符串前添加@

string connstring = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|@Registration.mdf;Integrated Security=True";

答案 1 :(得分:0)

您尚未创建连接对象。我认为您需要先创建并打开连接。