Ошибка при сортировке столбца GridView щелчком по тексту заголовка

#c# #asp.net

#c# #asp.net

Вопрос:

Я привязываю GridView в asp.net из набора данных. Здесь я сортирую представление сетки по тексту заголовка. Мой код:

     public SortDirection GridViewSortDirection
        {
            get
            {
                if (ViewState["sortDirection"] == null)
                    ViewState["sortDirection"] = SortDirection.Ascending;
                return (SortDirection)ViewState["sortDirection"];
            }
            set { ViewState["sortDirection"] = value; }
        }

      protected void gridLeaveRequest_Sorting(object sender, GridViewSortEventArgs e)
        {
            string sortExpression = e.SortExpression;

            if (GridViewSortDirection == SortDirection.Ascending)
            {
                GridViewSortDirection = SortDirection.Descending;
                SortGridView(sortExpression, "DESCENDING");
            }
            else
            {
                GridViewSortDirection = SortDirection.Ascending;
                SortGridView(sortExpression, "ASCENDING");
            }
        }

        private void SortGridView(string sortExpression, string direction)
        {
            dsLoginDetail = clsBLogic.GetLoginDetailByEmployeeNo(Convert.ToString(Session["LoginName"]));
            emoloyeeNo = dsLoginDetail.Tables[0].Rows[0]["EmployeeNo"].ToString();
            DataSet dsLeaveRequest = new DataSet();        
            dsLeaveRequest = clsBLogic.GetLeaveRequestByEmployeeNo(emoloyeeNo);        
            DataTable dt = dsLeaveRequest.Tables[0];
            DataView dv = new DataView(dt);
            dv.Sort = sortExpression   direction;
            gridLeaveRequest.DataSource = dv;
            gridLeaveRequest.DataBind();
        } 


 <asp:GridView ID="gridLeaveRequest" EmptyDataText="No Record Found..."  runat="server" AutoGenerateColumns="false"
                AllowPaging="True" PageSize="20" OnPageIndexChanging="gridLeaveRequest_PageIndexChanging" AllowSorting="True" OnSorting="gridLeaveRequest_Sorting">

<asp:BoundField DataField="Purpose" HeaderText="Purpose" ItemStyle-Width="40%" SortExpression="Purpose" >
</asp:BoundField>
  

Когда я нажимаю на целевой заголовок gridview, я получаю ошибку времени выполнения "Cannot find column PurposeDESCENDING." при dv.sort=sortExpression direction;
Любая помощь?? заранее спасибо

Комментарии:

1. Вам нужен пробел между SortExpression и direction: dv.Sort = SortExpression » » direction;

2. это не сработало .. ошибка «Не удается найти назначение столбца ПО УБЫВАНИЮ».

Ответ №1:

Изменить DESCENDING с помощью DESC

Изменить ASCENDING с помощью ASC

Добавьте пробел между SortExpression и SortDirection ;

  dv.Sort = sortExpression   " "   direction;