自动生成列的,怎么取列名

解决方案 »

  1.   

    在DataGrid的ItemDatabound事件中,添加如下代码:
     If e.Item.ItemType = ListItemType.Header Then
        str=e.Item.Cells(i).Text
     End if第一行是判断是否为头
    如果是,取出这个头的名字。
    同理还有:
    If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
    ...
    End IF
    这个是内容项(当然需要名括交替项)有这两个判断,不仅可以动态取出列名,还可以根据列名,动态的翻译列名,动态翻译内容,动态为列设定数据格式等等...
      

  2.   

    补充一下,如果想动态为列设定格式,需要一个数组来定义每列的格式的信息。参考代码(VB):
       Dim i As Integer
            '头部分
            If e.Item.ItemType = ListItemType.Header Then            Formats = New String(e.Item.Cells.Count - 1) {}
                For i = 0 To e.Item.Cells.Count - 1
                    Formats(i) = "M"'初始格式化信息,避免为空
                Next
                For i = 0 To e.Item.Cells.Count - 1
                    If e.Item.Cells(i).Text = "CS" Then
                        Formats(i) = "0.00"
                        e.Item.Cells(i).Text = "平均车速"
                    ElseIf e.Item.Cells(i).Text = "CSL" Then
                        e.Item.Cells(i).Text = "车数"
                    ElseIf e.Item.Cells(i).Text = "JZ" Then
                        e.Item.Cells(i).Text = "净重"
                    ElseIf e.Item.Cells(i).Text = "LB" Then
                        e.Item.Cells(i).Text = "类别"
                        Formats(i) = "T"
                    ElseIf e.Item.Cells(i).Text = "SHDWNAME" Then
                        e.Item.Cells(i).Text = "收货单位"
                    End If
                Next
                '内容部分
            ElseIf e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
                Dim j As Integer
                For j = 0 To e.Item.Cells.Count - 1
                    If Formats(j) = "T" Then
                        If Trim(e.Item.Cells(j).Text) = "J" Then e.Item.Cells(j).Text = "购进"
                        If Trim(e.Item.Cells(j).Text) = "C" Then e.Item.Cells(j).Text = "售出"
                    End If
                    If Formats(j) = "0.00" Then
                        e.Item.Cells(j).Text = CType(e.Item.Cells(j).Text, Double).ToString(Formats(j))
                    End If            Next
            End If