简体   繁体   中英

How to show the selected value from the drop down list and show it in gridview

I want it to show the selected value from the drop down list and show it on gridview. It is supposed to query from the database using Where to indicate the selected value to show. For example, I select james from the drop down list. It supposes to go to the database and query james row. After that the grid view is supposed to show only one value which james. But now I am having a problem where the grid view show every data that is available in the database.

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

You need to get the selected value using SelectedValue of dropdownlist and then query database using this value.

getquery = DropDownList1.SelectedValue;

Also you are using BindData method which will always select all data from database you need to seprate this method so only selected data is bind to 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();

}

You are calling ExecuteNonQuey function which is used to Insert or Update data in database so it will not return any data.

Also when using SqlDataAdapter you don't need to explicitly call Open and Close function for opening and closing connection.

Change your DropDownlist_SelectedIndexChanged function to the following:

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

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM