如题。在VS2003下

解决方案 »

  1.   

    不行的,我试过了,自动生成的列DataGrid1.Columns.count的值是0
      

  2.   

    private void Button1_Click(object sender, System.EventArgs e)
            {
                foreach(DataGridItem row in DataGrid1.Controls[0].Controls)
                    if(row.ItemType == ListItemType.Header)
                        Response.Write(row.Cells[0].Text);
            }
      

  3.   

    你只能从DataGrid1.Controls[0].Controls中检索,找到Header这一行,然后就可以得到里面的值:
    private void Button1_Click(object sender, System.EventArgs e)
    {
        foreach(DataGridItem row in DataGrid1.Controls[0].Controls)
        {
            if(row.ItemType == ListItemType.Header)
            {
                Response.Write(row.Cells[列索引].Text);
                break;
            }
        }
    }
      

  4.   

    直接取你綁定的table的名稱也可以啊!ds.Tables[0].Columns[0].ColumnName
      

  5.   

    我是用VB的,但意思也差不多。
    在DATAGRID里有十多列,前面十列是肯定有了的,而且名称也是固定的,我们就从第十一列开始取它的列标题,我这样写:
     For J = 10 To Dg.Items(I).Cells.Count - 1
                  For Each DgItem As DataGridItem In Dg.Controls(0).Controls '.Controls  
                    If DgItem.ItemType = ListItemType.Header Then                        
                        Response.Write "第" & j & "列标题是:" & DgItem.Cells(J).Text 
                      Exit For
                    End If
                  Next
                Next但出来的标题都是空的,为什么呀?
      

  6.   

    你可以对照一下完整的例子:<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm4.aspx.vb" Inherits="vb_bs_2006.WebForm4"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <title>WebForm4</title>
    <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
    <meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
    <meta name="vs_defaultClientScript" content="JavaScript">
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    </HEAD>
    <body MS_POSITIONING="GridLayout">
    <form id="Form1" method="post" runat="server">
    <FONT face="宋体">
    <asp:DataGrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 48px; POSITION: absolute; TOP: 200px"
    runat="server" Width="408px" Height="184px"></asp:DataGrid>
    <asp:Button id="Button1" style="Z-INDEX: 102; LEFT: 512px; POSITION: absolute; TOP: 304px" runat="server"
    Text="Button"></asp:Button></FONT>
    </form>
    </body>
    </HTML>
    *********************************
    Public Class WebForm4
        Inherits System.Web.UI.Page#Region " Web 窗体设计器生成的代码 "    '该调用是 Web 窗体设计器所必需的。
        <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()    End Sub
        Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid
        Protected WithEvents Button1 As System.Web.UI.WebControls.Button    '注意: 以下占位符声明是 Web 窗体设计器所必需的。
        '不要删除或移动它。
        Private designerPlaceholderDeclaration As System.Object    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
            'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
            '不要使用代码编辑器修改它。
            InitializeComponent()
        End Sub#End Region    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            '在此处放置初始化页的用户代码
            If Not Me.IsPostBack Then
                BindData()
            End If
        End Sub
        Private Sub BindData()
            Dim dt As New DataTable
            dt.Columns.Add("field1")
            dt.Columns.Add("field2")
            dt.Columns.Add("field3")
            dt.Columns.Add("field4")
            For i As Integer = 1 To 20
                Dim dr As DataRow = dt.NewRow()
                dr(0) = i
                dr(1) = i + i
                dr(2) = i * i
                dr(3) = Now
                dt.Rows.Add(dr)
            Next
            dt.AcceptChanges()        Me.DataGrid1.DataSource = dt
            Me.DataGrid1.DataBind()
        End Sub    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click        For Each DgItem As DataGridItem In DataGrid1.Controls(0).Controls '.Controls  
                If DgItem.ItemType = ListItemType.Header Then
                    For J As Integer = 1 To DgItem.Cells.Count - 1
                        Response.Write("第" & J + 1 & "列标题是:" & DgItem.Cells(J).Text & "<br>")
                    Next
                    Exit For
                End If
            Next
        End Sub
    End Class