Monday, September 5, 2011

Grid Sort Using List & Linq Concepts

<asp:GridView ID="gvResults" runat="server" AutoGenerateColumns="false" CssClass="list"
GridLines="None" AllowSorting="True" OnSorting="gv_Sorting" meta:resourcekey="gvResultsResource1"
OnRowDataBound="gvResults_RowDataBound" AllowPaging="false">
<Columns>
<asp:BoundField HeaderText="No" DataField="id" SortExpression="id" HeaderStyle-CssClass="center">
<HeaderStyle CssClass="center" />
</asp:BoundField>
<asp:TemplateField SortExpression="priority" meta:resourcekey="TemplateFieldResource1">
<ItemTemplate>
<div class="color_it" style="background: <%# urgency[Int32.Parse(Eval("priority").ToString())] %>">
 <%# Eval("priority1.priority_name") %></div>
</ItemTemplate><HeaderStyle Width="60px"></HeaderStyle>
</asp:TemplateField>
<asp:TemplateField SortExpression="title" meta:resourcekey="TemplateFieldResource2">
<ItemTemplate>
</ItemTemplate>
<HeaderStyle Width="380px"></HeaderStyle>
</asp:TemplateField>
<asp:TemplateField HeaderText="SubGroup" SortExpression="SubGroup">
<ItemTemplate>
<asp:Label ID="lblSubGroupbyId" Visible="false" Text='<%# Eval("assigned_to_group") %>' runat="server"></asp:Label>
<asp:Label ID="lblSubGroupby" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="AssignedTo" SortExpression="Assign_To">
<ItemTemplate>
<asp:Label ID="lblAssignedbyId" Visible="false" Text='<%# Eval("Assign_To") %>' runat="server"></asp:Label>
<asp:Label ID="lblAssignedby" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="ExpectedDate" SortExpression="ExpectedDate" DataFormatString="{0:d}"
HtmlEncode="False" HeaderText="Expected Date">
<HeaderStyle Width="120px" />
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:TemplateField HeaderText="Raisedby" SortExpression="Ticket_rasied">
<ItemTemplate>
<asp:Label ID="lblRaisedbyId" Visible="false" Text='<%# Eval("Ticket_rasied") %>' runat="server"></asp:Label>
<asp:Label ID="lblRaisedBy" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Center" SortExpression="Center">
<ItemTemplate>
<%# GetCenterName(Convert.ToInt32(Eval("Center")))%>
</ItemTemplate> </asp:TemplateField>
<asp:BoundField DataField="submitted" SortExpression="submitted" DataFormatString="{0:d}" HtmlEncode="False" meta:resourcekey="BoundFieldResource1">
<HeaderStyle Width="80px" />
<ItemStyle HorizontalAlign="Center" /> </asp:BoundField>
<asp:TemplateField SortExpression="status" meta:resourcekey="TemplateFieldResource3">
<ItemTemplate>
<div class="color_it" style="width: 83px; text-align: center;">
<%# Eval("statuse.status_name") %></div> </ItemTemplate>
<HeaderStyle CssClass="center" HorizontalAlign="Center" />
</asp:TemplateField>
</Columns>
</asp:GridView>
-----
protected void gv_Sorting(object sender, GridViewSortEventArgs e)
    {
IEnumerable<ticket> searchResults = IEnumerable<ticket>)Session["searchResults"];
GridView gv = (GridView)sender;
if (Session[e.SortExpression] == null || Session[e.SortExpression].ToString().Equals("+"))
{
Session[e.SortExpression] = "-";
switch (e.SortExpression)
{
case "priority": searchResults = from p in searchResults orderby p.priority1.level ascending select p; break;
case "title": searchResults = from p in searchResults orderby p.title ascending select p; break;
case "submitted": searchResults = from p in searchResults orderby p.submitted ascending select p; break;                case "status": searchResults = from p in searchResults join s in db.statuses on p.ticket_status equals s.id orderby s.status_name ascending select p; break;
case "Assign_To": searchResults = from p in searchResults join u in db.users on p.Assign_To equals u.id orderby u.userName ascending select p; break;
case "Ticket_rasied": searchResults = from p in searchResults join u in db.users on p.Ticket_rasied equals u.id orderby u.userName ascending select p; break;
case "id": searchResults = from p in searchResults orderby p.id ascending select p; break;
case "Center": searchResults = from p in searchResults join c in db.Centers on p.Center equals c.id orderby c.Center_name ascending select p; break;
case "ExpectedDate": searchResults = from p in searchResults orderby p.ExpectedDate ascending select p; break;
case "SubGroup": searchResults = from p in searchResults orderby p.assigned_to_group ascending select p; break;
default: break;
}
}
else
{
Session[e.SortExpression] = "+";
switch (e.SortExpression)
{
case "priority": searchResults = from p in searchResults orderby p.priority1.level descending select p; break;                case "title": searchResults = from p in searchResults orderby p.title descending select p; break;
case "submitted": searchResults = from p in searchResults orderby p.submitted descending select p; break;                case "status": searchResults = from p in searchResults join s in db.statuses on p.ticket_status equals s.id orderby s.status_name descending select p; break;
case "Assign_To": searchResults = from p in searchResults join u in db.users on p.Assign_To equals u.id orderby u.userName descending select p; break;
case "Ticket_rasied": searchResults = from p in searchResults join u in db.users on p.Ticket_rasied equals u.id orderby u.userName descending select p; break;
case "id": searchResults = from p in searchResults orderby p.id descending select p; break;
case "Center": searchResults = from p in searchResults join c in db.Centers on p.Center equals c.id orderby c.Center_name descending select p; break;
case "ExpectedDate": searchResults = from p in searchResults orderby p.ExpectedDate descending select p; break;
case "SubGroup": searchResults = from p in searchResults orderby p.assigned_to_group descending select p; break;
default: break;
}
}
gv.DataSource = searchResults;
gv.DataBind();
}

No comments:

Post a Comment