Поиск и отображение в gridview - PullRequest
1 голос
/ 28 марта 2012

Я работаю над этим, так как кто-то учит меня использовать gridview для отображения результатов поиска.

Моя проблема в том, что я даже не могу заставить его работать, когда нажимаю или нажимаю на поискКнопка ничего не происходит.У меня есть:

-1 текстовое поле для фамилии -2 выпадающий список для провинции и города - и кнопка поиска (триггер)

Вот что я сделал до сих пор:

 public partial class Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            string constring = ConfigurationManager.ConnectionStrings["AccreString"].ConnectionString;
            SqlConnection conn = new SqlConnection(constring);
            DataTable dt = new DataTable("emed_province");

            using (conn)
            {
                conn.Open();
                SqlCommand comm = new SqlCommand("SELECT * FROM emed_province ORDER BY PROVINCE_NAME ASC", conn);
                SqlDataAdapter adptr = new SqlDataAdapter(comm);
                adptr.Fill(dt);
            }

            ddlProvince.DataSource = dt;
            ddlProvince.DataTextField = "PROVINCE_NAME";
            ddlProvince.DataValueField = "PROVINCE_CODE";
            ddlProvince.DataBind();
        }
    }

    protected void ddlProvince_SelectedIndexChanged(object sender, EventArgs e)
    {
        string constring = ConfigurationManager.ConnectionStrings["AccreString"].ConnectionString;
        SqlConnection conn = new SqlConnection(constring);
        DataTable dt = new DataTable("emed_province");

        using (conn)
        { 
            conn.Open();
            SqlCommand comm = new SqlCommand("SELECT * FROM emed_city WHERE PROVINCE_CODE =@pcode", conn);
            comm.Parameters.AddWithValue("@pcode", ddlProvince.SelectedValue);
            SqlDataAdapter adptr = new SqlDataAdapter(comm);
            adptr.Fill(dt);

            SqlParameter param = new SqlParameter();
            param.ParameterName = "@pcode";
            param.Value = ddlProvince;

            comm.Parameters.Add(param);
        }

        ddlCity.DataSource = dt;
        ddlCity.DataTextField = "CITY_NAME";
        ddlCity.DataValueField = "CITY_CODE";
        ddlCity.DataBind();
    }

    private void BindGridView(string field)
    {


        DataTable dt = new DataTable();
        string constring = ConfigurationManager.ConnectionStrings["AccreString"].ConnectionString;
        SqlConnection conn = new SqlConnection(constring);

        try
        {
            conn.Open();
            SqlCommand comm = new SqlCommand("SELECT * FROM emed_accredited_providers WHERE DOCTOR_CODE =@pcode", conn);
            comm.Parameters.AddWithValue("@pcode", ddlProvince.SelectedValue);
            SqlDataAdapter adptr = new SqlDataAdapter(comm);
            adptr.Fill(dt);

            SqlParameter param = new SqlParameter();
            param.ParameterName = "@pcode";
            param.Value = ddlProvince;

            comm.Parameters.Add(param);

            if (dt.Rows.Count > 0)
            {
                GridView1.DataSource = dt;
                GridView1.DataBind();
            }
            else
            {
            }
            // NO RECORDS FOUND 
        }
        catch (System.Data.SqlClient.SqlException ex)
        {
            string msg = "Fetch Error:";

            msg += ex.Message;
            throw new Exception(msg);
        }
        finally
        {
            conn.Close();
        }
    }


    protected void btnSearch_Click(object sender, EventArgs e)
    {
        BindGridView(txtName.Text.Trim());
    } 
}

Я новичок в этом, пожалуйста, помогите мне.Спасибо!

1 Ответ

1 голос
/ 12 октября 2012

Вы не используете переменную строки поля, которую вы передаете BindGridView, и вы неправильно управляете параметрами SQL (добавляя один и тот же параметр дважды и назначая объект DropDown в качестве значения параметра).

Вы добавляете один и тот же параметр дважды.

Чтобы исправить это, удалите эту строку: comm.Parameters.AddWithValue("@pcode", ddlProvince.SelectedValue);

Вы не используете переменную поля.

Чтобы исправить это, измените эту строку

 param.Value = ddlProvince; // Note: You are assigning a dropdown OBJECT as the value here! 

до

 param.Value = field;

в вашей функции BindGridView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...