2014-10-28 2 views
-1

Мне нужно иметь три цвета на динамическом Gridview один белый, а другой серый, но если он в ту же дату , и если предыдущая дата не была найдено красный , что я имею в виду:Измените цвет строки Gridview, если он в ту же дату будет белого цвета, а затем серый

Name  Checkin   Checkout    Branch 
450 10/6/2014 9:13:38 AM 10/6/2014 6:01:50 PM branch0 white 
450 10/7/2014 9:16:34 AM 10/7/2014 6:44:21 PM branch0 gray 
450 10/8/2014 9:11:53 AM       branch0 white 
450 10/8/2014 6:03:25 PM       branch0 white 
450 10/11/2014 9:17:33 AM 10/11/2014 6:29:16 PM branch0 red 
450 10/11/2014 4:50:42 PM       branch0 red 
450 10/12/2014 9:09:38 AM       branch0 white 

и что мой GridView

<asp:GridView ID="GridView1" runat="server" AllowSorting="True" 
      AutoGenerateColumns="False" DataSourceID="SqlDataSource2" 
      BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px" 
      CellPadding="3" CellSpacing="2" HorizontalAlign="Center" Width="602px"> 
      <Columns> 
       <asp:BoundField DataField="Name" HeaderText="Name" 
        SortExpression="Name" /> 
       <asp:BoundField DataField="Checkin" HeaderText="Checkin" 
        SortExpression="Checkin" ReadOnly="True" /> 
       <asp:BoundField DataField="Checkout" HeaderText="Checkout" 
        SortExpression="Checkout" ReadOnly="True" /> 
       <asp:BoundField DataField="MachineAlias" HeaderText="Branch" 
        SortExpression="MachineAlias" /> 
      </Columns> 
      <FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" /> 
      <HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" /> 
      <PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" /> 
      <RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" /> 
      <SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" /> 
      <SortedAscendingCellStyle BackColor="#FFF1D4" /> 
      <SortedAscendingHeaderStyle BackColor="#B95C30" /> 
      <SortedDescendingCellStyle BackColor="#F1E5CE" /> 
      <SortedDescendingHeaderStyle BackColor="#93451F" /> 
     </asp:GridView> 

и это код

Public Class WebForm2 
    Inherits System.Web.UI.Page 

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 

    End Sub 

End Class 
44 +44516410617451515053691368888

после я искать у меня есть этот код

Dim found As Boolean 
    Dim dt As DateTime 
    Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As 
    System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound 
     If e.Row.RowType = DataControlRowType.DataRow Then 
      If Not IsDBNull(DataBinder.Eval(e.Row.DataItem, "Checkout")) Then 
       dt = Convert.ToDateTime(DataBinder.Eval(e.Row.DataItem, "Checkout")).Date 


      End If 

      If e.Row.RowIndex > 0 And found = False Then 
       e.Row.BackColor = Drawing.Color.Red 
      End If 
      found = Not IsDBNull(DataBinder.Eval(e.Row.DataItem, "Checkout")) 
     End If 
    End Sub 

но это дает моя ошибка

Error

когда я пытаюсь код с MR @Zack я эта ошибка

Eroor3

+0

Довольно уверен, что вы можете использовать событие RowDataBound, чтобы сравнить два столбца друг с другом и выделить их, когда есть совпадение в дате. Вам нужно будет отформатировать данные, поступающие из ячейки, в mm/dd/yyyy и отбросить время, хотя это будет точное совпадение. Я приведу вам пример, но я не сижу за компьютером с компилятором и не хочу давать вам уродливый код. Если вы google, хотя вы можете найти что-то на нем. – Zack

+0

Линия ошибок состоит в том, что она должна быть e.Row.RowType, и вы просто имеете «R» в середине ее. Он также обрабатывает GridView1.DataBinding и должен быть GridView1.RowDataBound – Zack

ответ

0

Попробуйте использовать это ...

Protected Sub GridView1_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles  GridView1.RowDataBound 
    If e.Row.RowType = DataControlRowType.DataRow Then 

     Dim arg1 As Date = Date.Parse(e.Row.Cells(1).Text) 
     Dim arg2 As Date = Date.Parse(iif(isDate(e.Row.Cells(2).Text),e.Row.Cells(2).Text,"1/1/1900")) 

     If arg1 = arg2 Then 
      e.Row.BackColor = Drawing.Color.Red 
     End If 

    End If 
End Sub 
+0

сначала позвольте мне поблагодарить вас, и я отредактировал свой пост для вас. У меня есть ошибка и я уверен, что если я попробую этот код, у меня будут три цвета W и G и R –

+0

Попробуйте изменить мое предложение выше, извините, если синтаксис взломан, я делаю это из памяти на данный момент ... – Zack

Смежные вопросы