【问题标题】:Sort Data in GridView in asp在asp中对GridView中的数据进行排序
【发布时间】:2012-11-12 17:29:17
【问题描述】:

我有一个 GridView,其中填充了来自数据库的数据。我使用 mssql 函数获取我的数据。这就是我获取数据的方式:

private void GetNoLocationScanAddress(GridView grid, int week)
        {
            try
            {
                FunctionDataContext function = new FunctionDataContext();
                List<Fn_GetNoLocationAddressGroupedResult> address = function.Fn_GetNoLocationAddressGrouped("0X", week).ToList();
                grid.DataSource = address;
                grid.DataBind();
            }
            catch (Exception exception)
            {
                Console.WriteLine("ERROR in GetNoLocationScanAddress() method. Error Message : " + exception.Message);
            }
        }

问题是我已经在我的函数中对数据进行排序。我还使用 Switch case 来确定选择查看哪些数据。

 protected void WeekSelector_OnIndexChanhed(object sender, EventArgs e)
        {
            switch (RadioButtonList.SelectedIndex)
            {
                case 0:
                    GetScanErrorsAddress(Grid, Convert.ToInt32(WeekSelector.SelectedValue));
                    Grid.DataBind();
                    break;

                case 1:
                    GetScanErros(Grid, Convert.ToInt32(WeekSelector.SelectedValue));
                    Grid.DataBind();
                    break;

                case 2:
                    GetNoLocationScanAddress(Grid, Convert.ToInt32(WeekSelector.SelectedValue));
                    Grid.DataBind();
                    break;

                case 3:
                    GetNoLocationScan(Grid, Convert.ToInt32(WeekSelector.SelectedValue));
                    Grid.DataBind();
                    break;
            }
        }

函数sql:

SELECT     TOP (100) PERCENT Request1.RequestID, TrackIT.dbo.Sending.Barcode, TrackIT.dbo.Address_View.AdrID, TrackIT.dbo.Address_View.Name, 
                      TrackIT.dbo.Address_View.Street, TrackIT.dbo.Address_View.HouseNo, TrackIT.dbo.Address_View.Postal, TrackIT.dbo.Address_View.City, 
                      TrackIT.dbo.Address_View.Country, Request1.Latitude +','+  Request1.Longitude AS Location,  Case when(Request1.Latitude<>'')then cast(1 as bit) else cast(0 as bit) end AS showLocation, Request1.ReceivedDate
FROM         (SELECT DISTINCT RequestID, LTRIM([Content]) AS Barcode, Latitude, Longitude, ReceivedDate
                       FROM          dbo.RequestWithLocation
                       WHERE      (Site LIKE @Site) AND ([Content] <> '') AND (AddressID = '0') AND (ReceivedDate > DATEADD(day, -@ReceivedDate, GETDATE()))) AS Request1 INNER JOIN
                      TrackIT.dbo.Sending ON Request1.Barcode = TrackIT.dbo.Sending.Barcode INNER JOIN
                      TrackIT.dbo.Address_View ON TrackIT.dbo.Sending.DeliveryAdrID = TrackIT.dbo.Address_View.AdrID

ORDER BY TrackIT.dbo.Address_View.AdrID

谁能帮我解决这个问题?

【问题讨论】:

  • 对不起,我不明白你的问题是什么。数据以哪种排序顺序进来,你希望它如何排序,当前排序是如何实现的?如果我理解正确,您正在对存储过程进行排序。在这种情况下,请提供该 SP 的来源。
  • 我在我的 SP 中排序,但如果用户希望对 GridView 进行排序,用户必须能够通过按列标题进行排序。
  • 请查看这个问题:stackoverflow.com/questions/1699642/…

标签: c# asp.net .net gridview


【解决方案1】:

您可以使用 -Linq(OrderBy 或 OrderByDescending),对您的 List&lt;Fn_GetNoLocationAddressGroupedResult&gt; 进行排序。

例如。

address.OrderBy(x => x.Country);            // ascending
address.OrderByDescending(x => x.Country);  // descending

【讨论】:

    【解决方案2】:

    从您的 cmets 中,如果用户必须能够通过按列标题对 gridview 进行排序,并且如果您使用的是标准 ASP.NET System.Web.UI.WebControls.GridView,您可以简单地“启用排序” , 在属性窗格中通过将“AllowSorting”设置为 true 或通过控件右上角的“弹出窗口”选中“启用排序”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-07
      • 1970-01-01
      • 2016-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多