Сетка Сортировка c # при нажатии кнопки «Редактировать» не работает - PullRequest
0 голосов
/ 11 июня 2018

Я нажимаю на кнопку редактирования, не сортируя заголовок моего столбца в DataGridView, это отлично работает, я могу отредактировать строку и значения в выпадающем списке.

Однако, когда я сортирую столбец, а затем нажимаю «Изменить» - это позволяет мне редактировать исходную DataGridView, а не отсортированную версию.

Я думаю, что это проблема, связывающая сетку данных на кнопке редактирования, поскольку она нигде не хранит порядок сортировки, но не может понять, как сохранить сеанс сортировки и применить его в методе GetgvCaseListData().

Приведенный ниже код работает нормально перед сортировкой, но прерывается при сортировке GridView и нажатии кнопки редактирования:

protected void GetgvCaseListData()
{
    string connectionstring = ConfigurationManager.ConnectionStrings["DBConnection"].ConnectionString;
    SqlConnection cn = new SqlConnection(connectionstring);
    SqlCommand cmd = new SqlCommand("[dbo].cr_fe_list", cn); 
    cmd.Parameters.AddWithValue("@subteamno", SubTeam);
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    cmd.CommandType = CommandType.StoredProcedure;

    DataTable ds = new DataTable();
    da.Fill(ds);

    if (ds.Rows.Count > 0)
    {
        gvCaseList.DataSource = ds;
        gvCaseList.DataBind();
        ViewState["dirState"] = ds;
        ViewState["sortdr"] = "Asc";

    }
    else
    {
        noresultsvalidation.Visible = true;
        gvCaseList.DataSource = ds;
        gvCaseList.DataBind();
        ViewState["dirState"] = ds;
        ViewState["sortdr"] = "Asc";
    }

protected void gvCaseList_RowDataBound(object sender, GridViewRowEventArgs e)
{

    MeasurementID = Convert.ToInt32(DataBinder.Eval(e.Row.DataItem, "MeasurementID"));
    string connectionstring = ConfigurationManager.ConnectionStrings["DBConnection"].ConnectionString;
    SqlConnection cn = new SqlConnection(connectionstring);
    if (e.Row.Cells[10].Text == "OVERDUE")
    {
        e.Row.Cells[10].ForeColor = System.Drawing.Color.Red;
        e.Row.Cells[10].Font.Bold = true;
    }
    if (e.Row.RowType == DataControlRowType.DataRow && ((e.Row.RowState & DataControlRowState.Edit) > 0))
    {
        cn.Open();
        DropDownList DropDownList1 = (e.Row.FindControl("ddlException") as DropDownList);
        TextBox tb1 = (e.Row.FindControl("ExceptionText") as TextBox);
        SqlCommand cmd = new SqlCommand("[dbo].cr_fe_exception", cn);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@SubTeamNo", SubTeam);
        cmd.Parameters.AddWithValue("@MeasurementID", MeasurementID);

        DataTable dt = new DataTable();
        using (SqlDataAdapter a = new SqlDataAdapter(cmd))
        {
            a.Fill(dt);
        }

        cn.Close();
        DropDownList1.DataSource = dt;
        DropDownList1.DataTextField = "ExceptionDesc";
        DropDownList1.DataValueField = "ExceptionID";
        DropDownList1.DataBind();
        DropDownList1.Items.Insert(0, new ListItem("--Select Exception--", "0"));


        if (CurrentException != "")
        {

            DropDownList1.SelectedValue = DropDownList1.Items.FindByText(CurrentException).Value;
            tb1.Enabled = true;

        }
    }
}

protected void gvCaseList_edit(object sender, GridViewEditEventArgs e)
{

    Label label1 = (Label)gvCaseList.Rows[e.NewEditIndex].FindControl("Label1");
    CurrentException = label1.Text;

    gvCaseList.EditIndex = e.NewEditIndex;
    GetgvCaseListData();

}

protected void gvCaseList_Sorting(object sender, GridViewSortEventArgs e)
{
    DataTable dtrslt = (DataTable)ViewState["dirState"];
    if (dtrslt.Rows.Count > 0)
    {
        if (Convert.ToString(ViewState["sortdr"]) == "Asc")
        {
            dtrslt.DefaultView.Sort = e.SortExpression + " Desc";
            ViewState["sortdr"] = "Desc";
        }
        else
        {
            dtrslt.DefaultView.Sort = e.SortExpression + " Asc";
            ViewState["sortdr"] = "Asc";
        }
        gvCaseList.DataSource = dtrslt;
        gvCaseList.DataBind();

    }  

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