如何从下拉列表中显示所选值并在gridview中显示它

时间:2015-12-09 04:06:29

标签: c# asp.net

我希望它从下拉列表中显示所选值并在gridview上显示。它应该使用Where来指示要显示的选定值的数据库。例如,我从下拉列表中选择james。它假设去数据库并查询james行。之后,网格视图应该只显示一个詹姆斯值。但现在我遇到一个问题,网格视图显示数据库中可用的每个数据。

public partial class Search_Engine : System.Web.UI.Page
{
#region Database

static string HostName = "localhost";
static string DatabaseName = "finalproject";
static string TableName = "truckinfo";
//static string TableBucket = "bucketbrigade";
static string UserName = "root";
static string Password = "";

//--- Used for access to database infomation-----
string ConnStr = "Data Source=" + HostName + ";" +
                 "Database=" + DatabaseName + ";" +
                 "User ID=" + UserName + ";" +
                 "Password=" + Password;

string Qry = "";

MySqlConnection Con;
MySqlCommand Cmd;
MySqlDataReader Rdr;

#endregion
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {

        BindData();


        using (Con = new MySqlConnection(ConnStr))
        {
            Con.Open();
            using (Cmd = new MySqlCommand("SELECT * FROM truckinfo", Con))
            {

                using (Rdr = Cmd.ExecuteReader())
                {
                    if (Rdr.HasRows)
                    {
                        DropDownList1.DataSource = Rdr;
                        DropDownList1.DataValueField = "truckplateno";
                        DropDownList1.DataTextField = "truckplateno";
                        DropDownList1.DataBind();
                    }
                }
            }
        }
    }
}
private void BindData()
{
    DataTable dt = new DataTable();
    try
    {
        MySqlConnection Con = new MySqlConnection(ConnStr);
        Con.Open();
        MySqlDataAdapter da = new MySqlDataAdapter("SELECT * FROM " +
                          DatabaseName + "." + TableName , Con);


        da.Fill(dt);
        if (dt.Rows.Count > 0)
        {
            GridView1.DataSource = dt;
            GridView1.DataBind();
        }

        Con.Close();

    }
    catch (Exception ex)
    {
        Response.Write(ex.ToString());
    }
}



protected void TextBox1_TextChanged(object sender, EventArgs e)
{




}
protected void Button1_Click(object sender, EventArgs e)
{

}
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{

}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
    Con = new MySqlConnection(ConnStr);
    Con.Open();
    try
    {
        String getquery;
        // String a;
        getquery = DropDownList1.Text;
        TextBox1.Text = getquery;
        // a = TextBox2.Text;
        //  TextBox1.Text = a;
        Qry = @"SELECT * FROM finalproject.truckinfo WHERE truckplateno=" + "'" + getquery + "'" + ";";
        Cmd = new MySqlCommand(Qry, Con);
        Cmd.ExecuteNonQuery();
        Con.Close();
        BindData();
    }
        catch (Exception ex)
    {
        Response.Write(ex.ToString());
    }
}
}

2 个答案:

答案 0 :(得分:0)

您需要使用selected value下拉列表获取SelectedValue,然后使用此值查询database

getquery = DropDownList1.SelectedValue;

此外,您使用BindData方法始终select all来自database的{​​{1}}数据需要seprate此方法,因此只有selected data绑定到gridview。

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
String getquery;
getquery = DropDownList1.Text;
MySqlConnection Con = new MySqlConnection(ConnStr);
Con.Open();
MySqlDataAdapter da = new MySqlDataAdapter("SELECT * FROM finalproject.truckinfo WHERE truckplateno='" + getquery + "'", Con);
da.Fill(dt);
if (dt.Rows.Count > 0)
{
    GridView1.DataSource = dt;
    GridView1.DataBind();
}

Con.Close();

}

您正在调用ExecuteNonQuey函数,该函数用于Insert中的Updatedatabase数据,因此不会return任何数据。

  

使用SqlDataAdapter时,您也不需要明确调用   OpenClose用于打开和关闭连接。

答案 1 :(得分:0)

将DropDownlist_SelectedIndexChanged函数更改为以下内容:

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
Con = new MySqlConnection(ConnStr);
DataTable dt = new DataTable();
try
{
    Con.Open();
    string getquery = DropDownList1.SelectedValue;
    TextBox1.Text = getquery;
    // a = TextBox2.Text;
    //  TextBox1.Text = a;
    Qry = @"SELECT * FROM finalproject.truckinfo WHERE truckplateno=" + "'" + getquery + "'" + ";";
    MySqlCommand ddlCMD = new MySqlCommand(Qry, Con);
    MySqlDataAdapter msda = new MySqlDataAdapter(ddlCMD);
    msda.Fill(dt);
    GridView1.DataSource = dt;
    GridView1.DataBind();
}
    catch (Exception ex)
{
    Response.Write(ex.ToString());
}
finally{
    Con.Close();
}

}