var supervisorSummary = Persons.GroupBy(p => p.SupervisorName)
.Select(group => new { Name = group.Key,
Count = group.Count() })
.OrderBy(x => x.Name).ToList();
Этот запрос возвращает имя и счет отлично. Я привязал этот вывод к GridView и выполнил Сортировку по обоим столбцам. Затем я понял, что граф рассматривается как String вместо Integer в GridView.Группа Linq по возврату anonymous
Есть ли способ указать тип данных для BoundField в Gridview здесь?
<asp:GridView ID="gvSupervisorSummary" runat="server" AutoGenerateColumns="False" EnableViewState="False" AllowSorting="true" OnSorting="gvSupervisorSummary_Sorting"
BackColor="White" BorderColor="#cccccc" BorderStyle="None" BorderWidth="1px" CellPadding="2"
EmptyDataText="No person found." GridLines="none" Width="100%">
<AlternatingRowStyle BackColor="#ededed" />
<Columns>
<asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
<asp:BoundField DataField="Count" HeaderText="Direct Reports Count" SortExpression="Count"/>
</Columns>
Я конвертирую в DataView и привязываю к сетке, чтобы сделать мой сорт более динамичным.
DataView dv = new DataView(DataManager.ToDataTable(supervisorSummary));
dv.Sort = SortExpression;
gvSupervisorSummary.DataSource = dv;
gvSupervisorSummary.DataBind();
Мое выражение сортировки определяется как
private string SortExpression { get { if (Session["SCSortExpression"] == null) Session["SCSortExpression"] = "Count ASC"; return Session["SCSortExpression"].ToString(); } set { Session["SCSortExpression"] = value; } }
[Count] (https://msdn.microsoft.com/en-us/library/vstudio/bb338038%28v=vs. 100% 29.aspx) всегда возвращает значение int. Что дало вам понять, что 'Count' является значением' text'? –
Вы уверены, что не просто создали графу графа как строку вместо целого? – Hozikimaru
Это моя ошибка, она возвращает int. Кажется, что-то с GridView обрабатывает все данные как String. Есть идеи? – techspider