2014-11-10 2 views
-2

У меня есть сетка.сортировать сетку на основе forecolor строки

Я меняю цвет некоторых строк на красный в 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

Так что же фактический 'если («условие, чтобы изменить цвет на красный»)' выглядеть ...? – MethodMan

+0

Как выглядит ваш источник данных? Сможете ли вы добавить флаг в каждую из этих строк? – Sam

+0

Я бы сортировал его с помощью SQL, а затем представил его в вашей сетке. – briskovich

ответ

0

Может быть, вы могли бы заказать сетку перед ... привязки данных

что-то вроде как:

var Datasource = GetDataSource(); 

var OrderedDataSource = DataSource.OrderBy(Data => ConditionToChangeColorToRed(Data) ? 0 : 1); 

gvMain.DataSource = OrderedDataSource; 
gvMain.DataBind(); 
Смежные вопросы