C# 多个下拉列表分别更改表C和MySql查询

C# 多个下拉列表分别更改表C和MySql查询,c#,mysql,sql,concatenation,C#,Mysql,Sql,Concatenation,好的,我有两个下拉列表,当选择时会对每个列表产生影响,如果用户从DDLContry中选择法国,那么DdPetPist将填充法国动物表,当选择英国或德国时,将填充英国表或德国表。这很有效。 问题是我有一个标签打印出来,显示两件事,价格和股票从UK_动物表拉。 我如何改变我的表格查询,根据当时选择的动物显示库存和价格?如果用户选择狗,它将显示信息,但仅针对英国的狗。我需要它,以便此标签随国家/地区表更改 这两个下拉列表 选择不同国家/地区时更改表格的代码 根据动物选择改变标签但不改变动物表的代码 这

好的,我有两个下拉列表,当选择时会对每个列表产生影响,如果用户从DDLContry中选择法国,那么DdPetPist将填充法国动物表,当选择英国或德国时,将填充英国表或德国表。这很有效。 问题是我有一个标签打印出来,显示两件事,价格和股票从UK_动物表拉。 我如何改变我的表格查询,根据当时选择的动物显示库存和价格?如果用户选择狗,它将显示信息,但仅针对英国的狗。我需要它,以便此标签随国家/地区表更改

这两个下拉列表

选择不同国家/地区时更改表格的代码

根据动物选择改变标签但不改变动物表的代码 这是我无法改变的共同赞助国家选择它始终在英国,我知道为什么,但不知道如何修复它,所以它会随着国家选择而改变

 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);
    } 
请问有没有办法做到这一点,如果有,怎么做? 谢谢。

DropDownList 1\u SelectedIndexChanged中的两个查询都指向UK\u Animals,因此您在DDL country\u 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中。

DropDownList 1\u SelectedIndexChanged中的两个查询都指向UK\u Animals,因此在ddlcountry\u 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中。

谢谢,我将尝试一下,然后返回给您。@Beep OK。我期待着您的回复。好的,我明白您的意思,我会修复它,这样我就不会重复连接字符串。这两个查询位于DropDownList 1\u SelectedIndexChanged是否有方法写入它们,以便根据不同国家/地区的选择进行调整,或者我是否需要为每个国家/地区编写单独的查询,并使用if-else语句进行相应更改。@Beep,有一种非常简单的方法:当您选择国家时,DdPetPist的数据源将更新到正确的表中。也就是说,当你在DropDownList 1_SelectedIndexChanged中时,DdPetPist实际上包含了目标国家的所有动物,不是吗?您看不到您选择的国家的动物在组合框中更新了吗?@Beep让我更新我的答案,以便您清楚地理解我的意思。谢谢您,我将尝试一下,然后返回给您。@Beep确定。我期待着您的回复。好的,我明白您的意思,我会修复它,这样我就不会重复连接字符串。这两个查询位于DropDownList 1\u SelectedIndexChanged是否有方法写入它们,以便根据不同国家/地区的选择进行调整,或者我是否需要为每个国家/地区编写单独的查询,并使用if-else语句进行相应更改。@Beep,有一种非常简单的方法:当您选择国家时,DdPetPist的数据源将更新到正确的表中。也就是说,当你在DropDownList 1_SelectedIndexChanged中时,DdPetPist实际上包含了目标国家的所有动物,不是吗?你看不到你选择的国家的动物在组合框中更新了吗?@Beep让我更新我的答案,让你明白我的意思。
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);
}