我让datagrid在数据绑定的时候,检查一下datagrid的第三列,如果它是空就执行一段程序
这是我的onitemdatabound函数里的一段
if(e.Item.Cells[2].Text=="")
{
e.Item.BackColor=Color.Black;
}
可死活,它就是运行不正常,我第三空,它照样像原来那样运行,晕!!

解决方案 »

  1.   

    我的第三列是smalldatetime类型的。
      

  2.   

    ItemDataBound事件中写For Each Item As DataGridItem In DataGrid1.Items
        If Item.Cells(2).Text="" Then
             Item.BackColor=Color.Black
        End If
    Next试试
      

  3.   

    刚测试了一下,可以foreach (DataGridItem Item in DataGrid1.Items) { 
     if (Item.Cells(2).Text == "") { 
       Item.BackColor = Color.Black; 
     } 
    }
      

  4.   

    老大照你的抄了一遍我怎么就不行,我是有c#的public void ItemDataBound(object sender,System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    foreach (DataGridItem Item in DataGrid1.Items) 

    if (Item.Cells[1].Text == "") 

    Item.BackColor = Color.Black; 

    }
      

  5.   

    并且很奇怪,用我那种方法,判断其它字符都是行的,比如是男显示一种颜色,是女再显示一种颜色,唯独是空用我那个就没反应了。
    if(e.Item.Cells[2].Text=="")
    {
    e.Item.BackColor=Color.Black;
    }
      

  6.   

    那你的那个要判断的那列,你在datagrid中是怎么写的呢?是用摸板了吗?
      

  7.   

    if (Item.Cells[1].Text == "")   // 改为 if (Item.Cells[1].Text == " ")

           Item.BackColor = Color.Black; 
    } 试试
      

  8.   

    if(e.Item.Cells[2].Text==" ")
    {
    e.Item.BackColor=Color.Black;
    }
    空格?
      

  9.   

    if (Item.Cells[1].Text == " ") 

    Item.BackColor = Color.Black; 

    刚帮你测试了一下。是这个问题,要加上 判断空格,因为你默认为空,他就有自动给你生成空格。你可以浏览的时候察看原代码。里面就能看到那个单元格里面有 
      

  10.   

    兄弟们,谢谢你们了,果然是这个问题,不过后面还有更怪的事,实际上我是想实现下面一段程序,就是如果那一栏不空我就把他转换成时间对象,可是他还是出错。如果不转换而是显示个背景什么的是能实现的。出错信息如下:该字符串未被识别为有效的日期时间。有一个从索引 0 处开始的未知字。

    if((e.Item.Cells[3].Text!=" ")&&(e.Item.Cells[5].Text!=" ")&&(e.Item.Cells[7].Text!=" ") )
    {
    DateTime dateJH=System.Convert.ToDateTime(e.Item.Cells[3].Text);
             DateTime dateJD=System.Convert.ToDateTime(e.Item.Cells[5].Text);
    DateTime dateSH=System.Convert.ToDateTime(e.Item.Cells[7].Text);
    }
      

  11.   

    如果要显示日期的话可以用这个-DataFormatString:<asp:BoundColumn DataField="ContractDate" SortExpression="ContractDate" HeaderText="合同日期" DataFormatString="{0:d}">
    <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
    <ItemStyle Width="80px"></ItemStyle>
    </asp:BoundColumn>
      

  12.   

    我是想换成datetime类后,再与当天进行比较。如果符合某一条件就使那一个单元格显示一种颜色。
    不过有些单元格是空的。
      

  13.   

    既然是onitemdatabound事件都直接从数据源中取而不要从datagrid上面取
    比如DateTime dt=DateTime.Parse(DataBinder.Eval(e.Item.DataItem,"date"))
      

  14.   

    Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
            For Each item As DataGridItem In DataGrid1.Items
                If item.Cells(3).Text <> "&nbsp;" Then
                    Dim dt As DateTime
                    dt = CType(item.Cells(3).Text, DateTime)
                    ''这里做比较.....然后操作你要操作的就可以了嘛
                End If
            Next
        End Sub
      

  15.   

    第二个错误是因为那列的值不是 DataTime 型的肯定还包含了别的字符,可能是系统自动生成的