【发布时间】:2013-12-10 10:10:45
【问题描述】:
我的数据库中有一个表,其中有 4 列 Specie | Price | Stock | Country.
我有一个名为 ddlcountry 的下拉列表,通过 Country 列填充。
然后我有一个名为 DdPetPist 的下拉菜单,其中应填充与通过上一个下拉菜单选择的国家/地区关联的所有 Specie。
例如,我选择英国,我有一个狗、猫和兔子的列表。
问题的
- 目前我在第二个下拉菜单中选择了 UK 和所有 Specie 节目。
- 当我选择国家下拉列表时,它会多次重复该国家/地区。
第一个下拉菜单的代码(国家选择)
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
MySqlCommand cd2 = new MySqlCommand("SELECT * FROM Animals", cs); // need to make it so changes database
cs.Open();
MySqlDataReader ddlCountry = cd2.ExecuteReader();
ddlcountry.DataSource = ddlCountry;
ddlcountry.DataValueField = "Country";
ddlcountry.DataTextField = "Country";
ddlcountry.DataBind();
cs.Close();
cs.Dispose();
}
}
选择县时填充第二个列表的代码
protected void ddlcountry_SelectedIndexChanged(object sender, EventArgs e)
{
if (ddlcountry.Text != string.Empty)
{
MySqlCommand cd = new MySqlCommand(string.Format("SELECT * FROM Animals", ddlcountry.Text), cs);
cs.Open();
MySqlDataReader ddlSpecie = cd.ExecuteReader();
DdPetPist.DataSource = ddlSpecie;
DdPetPist.DataValueField = "Specie";
DdPetPist.DataTextField = "Specie";
DdPetPist.DataBind();
cs.Close();
cs.Dispose();
}
}
我想我已经很接近了,只是不确定如何适当地调整我的 Query 。 任何帮助深表感谢。
【问题讨论】:
-
SELECT * FROM Animals您在哪里填充您的国家/地区-ddl?除此之外,不要重用您的MySqlConnection,而是使用using-语句。我很惊讶你没有得到异常,因为你正在处理它。如果你之后在另一种方法中使用它,你会得到一个ObjectDisposedException。 -
你的意思是这给我带来了问题吗?
-
我认为您不应该总是一遍又一遍地从数据库中获取物种。而是加载它们一次(也在 page_load 中),然后根据您选择的内容,相应地更改您的列表。
-
一些提示:对一次性资源使用“使用”语句,例如'MySqlCommand' 和 'SqlDbConnection' 是一次性的。
-
好的,谢谢您的建议,我会尝试更改一些代码。
标签: c# mysql drop-down-menu concatenation