我有一个网格视图。
我基于行命令事件中的逻辑在gridview中将某些行的颜色更改为红色。
现在我想对网格视图进行排序,使得彩色行显示在网格视图的顶部。 我有什么方法可以做到这一点。 ?我的代码如下:
aspx:
<asp:GridView ID="gvMain" runat="server" ShowFooter="true"OnRowCommand="gvMain_RowCommand">
<Columns>
<HeaderStyle Width="15%"></HeaderStyle>
</asp:TemplateField>
<asp:TemplateField HeaderText="Std" SortExpression="Std" >
<ItemTemplate>
<asp:Label ID="lblStd" runat="server" Text='<%#Eval("Std") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList Width="200" runat="server" id="cboStd" Font-Size="7pt" Height="12pt">
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Dept" SortExpression="Dept" >
<ItemTemplate>
<asp:Label ID="lblDept" runat="server" Text='<%#Eval("Dept") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList Width="100" runat="server" id="cboDept" Font-Size="7pt" Height="12pt">
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
aspx.cs
protected void gvMain_RowDataBound(object sender, GridViewRowEventArgs e)
{
try
{
List<StdMap> lstStd = null;
if (gvMain.EditIndex == e.Row.RowIndex)
{
lstStd = Service.GetDetails();
if (e.Row.RowType == DataControlRowType.DataRow)
{
lstStd = Service.GetDetails();
ReportMap row = ((ReportMap)e.Row.DataItem);
if ("condition to change color to red ")
{
e.Row.Cells[1].ForeColor = System.Drawing.Color.Red;
}
else
{
}
row = null;
}
}
catch (Exception ex)
{
}
}
如何让所有带有forecolor红色的行显示在网格视图的顶部?
答案 0 :(得分:0)
也许你可以在数据绑定之前订购你的网格......
某种类似的东西:
var Datasource = GetDataSource();
var OrderedDataSource = DataSource.OrderBy(Data => ConditionToChangeColorToRed(Data) ? 0 : 1);
gvMain.DataSource = OrderedDataSource;
gvMain.DataBind();