【问题标题】:Change drop down list depending on selection C#根据选择 C# 更改下拉列表
【发布时间】:2013-11-23 16:18:53
【问题描述】:

我有 2 个下拉列表 ddlcountryDdPetPistddlcountry 在 MYSQL 数据库中有自己的表,所以剂量 DdPetPist,我想选择 ddlcounty 来更改填充 DdPetPist 的表。所以将表从UK_Animals 更改为France_Animals。或`Germany_Animals。

填充下拉列表的代码

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();
            }

关于 ddlcountry 的选择更改

 protected void ddlcountry_SelectedIndexChanged(object sender, EventArgs e)
    {

    }  

如果有人可以提供帮助,将不胜感激。

【问题讨论】:

  • 您的 MySqlDatareader 和下拉列表具有相同的名称 - ddlcountry。先换一个。

标签: c# mysql asp.net drop-down-menu onselect


【解决方案1】:

希望我理解正确:

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();
  }
}  

【讨论】:

  • 我不是 100% 确定 ASP.Net 如何验证下拉值,但请确保黑客无法将 HTML 中的国家/地区值更改为 Users --(这可能从您的用户帐户表中选择(如果有)。最好的方法可能是从国家名称中删除除前两个字符之外的所有字符。
【解决方案2】:

试试这个

我假设 ddlcountry 包含与表名完全相同的国家/地区名称。(即 UK 、France 等)和表名(UK_Animals、France_Animals)

protected void ddlcountry_SelectedIndexChanged(object sender, EventArgs e)
{
    string country = ddlcountry.SelectedValue;
    string query =  "SELECT * FROM "+ country + "_Animals";   

     MySqlCommand cd = new MySqlCommand(query, cs);
     cs.Open();
     MySqlDataReader ddlSpecie = cd.ExecuteReader();
     DdPetPist.DataSource = ddlSpecie;
     DdPetPist.DataValueField = "Specie";
     DdPetPist.DataTextField = "Specie";
     DdPetPist.DataBind();
     cs.Close();
     cs.Dispose();
}  

【讨论】:

  • 谢谢它的工作,不幸的是我已经接受了@Tinwor 的答案。还是谢谢你。
猜你喜欢
  • 2014-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多