我正在尝试创建一个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();
}
}
答案 0 :(得分:0)
问题是你的连接字符串。如果你看一下你得到的内部异常,就说:
key&#39; attachdbfilename&#39;
的值无效
这post对此事提供了进一步的帮助。
要摆脱异常,只需在字符串前添加@
:
string connstring = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|@Registration.mdf;Integrated Security=True";
答案 1 :(得分:0)
您尚未创建连接对象。我认为您需要先创建并打开连接。