好的我有2个下拉列表,当选择时,每个结果都会影响,如果用户从ddlcountry
选择法国,那么DdPetPist
填充了France_Animals
表,当选择英国或德国时,它会填充无论是英国餐桌还是德国餐桌。这很好用。
问题是我打印出一个标签,显示从UK_Animals表中提取的price
和stock
两件事。
我如何更改我的表格查询以显示stock
和price
,具体取决于当前用户选择的动物,如果用户选择它将显示信息但仅适用于英国的狗。我需要它,所以这个标签随国家表格而变化。
两个DropDown列表
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
MySqlCommand cd2 = new MySqlCommand("SELECT * FROM Country", 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();
MySqlCommand cd = new MySqlCommand("SELECT * FROM UK_Animals", cs);
cs.Open();
MySqlDataReader ddlSpecie = cd.ExecuteReader();
DdPetPist.DataSource = ddlSpecie;
DdPetPist.DataValueField = "Specie";
DdPetPist.DataTextField = "Specie";
DdPetPist.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 {0}_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();
}
}
根据动物选择更改标签的代码( 但剂量未更改为动物表 ) 这是我不能改变为共同发展国家的选择它始终在英国,我知道为什么但不知道如何解决它所以它随国家选择而变化。
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
string selection_price = DdPetPist.SelectedValue;
string selection_stock = DdPetPist.SelectedValue;
string petPrice = string.Empty;
string available = string.Empty;
MySqlCommand cd_price = new MySqlCommand(String.Format("SELECT Specie_Price FROM UK_Animals WHERE Specie ='{0}'", selection_price), cs);
MySqlCommand cd_available = new MySqlCommand(String.Format("SELECT Stock FROM UK_Animals WHERE Specie ='{0}'", selection_stock), cs);
cs.Open();
petPrice = Convert.ToString(cd_price.ExecuteScalar());
available = Convert.ToString(cd_available.ExecuteScalar());
cs.Close();
PetPrice.Text = String.Format("Minimum Donation For A {0} Is £{1}.", selection_price, petPrice);
Availble.Text = String.Format("{0}'s Avalible {1}.", selection_stock, available);
}
请问有没有办法做到这一点,如果有,怎么办? 谢谢。
答案 0 :(得分:1)
DropDownList1_SelectedIndexChanged
中的两个查询都指向UK_Animals
因此,您在ddlcountry_SelectedIndexChanged
中选择的其他国家/地区的表格在写入标签时没有任何效果。
对于使用正确的国家/地区信息更新DdPetPist.DataSource
,您应该从DropDownList1_SelectedIndexChanged
访问此变量,而不是再次连接到数据库。或者,您可以通过选择相应国家/地区的表来保持与DB的连接;但是这个选项听起来不太合适:它将涉及不完全必要的数据库连接和全局变量。
更新
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
string selection_price = DdPetPist.SelectedValue;
string selection_stock = DdPetPist.SelectedValue;
string petPrice = string.Empty;
string available = string.Empty;
MySqlCommand cd_price = new MySqlCommand(String.Format("SELECT Specie_Price FROM {0}_Animals WHERE Specie ='{1}'", ddlcountry.Text, selection_price), cs);
MySqlCommand cd_available = new MySqlCommand(String.Format("SELECT Stock FROM {0}_Animals WHERE Specie ='{1}'", ddlcountry.Text, selection_stock), cs);
cs.Open();
petPrice = Convert.ToString(cd_price.ExecuteScalar());
available = Convert.ToString(cd_available.ExecuteScalar());
cs.Close();
PetPrice.Text = String.Format("Minimum Donation For A {0} Is £{1}.", selection_price, petPrice);
Availble.Text = String.Format("{0}'s Avalible {1}.", selection_stock, available);
}
这是“选项2”;最好的选择是调整这些查询,以便从DdPetPist.DataSource
中存储的给定国家/地区的表的本地副本中读取。