在客户端代码里可以取到啊.就是table的列宽.

解决方案 »

  1.   

    试下,这个给值的
    DataGrid1.Columns[1].ItemStyle.Width=Unit.Pixel(150);
      

  2.   

    如果你用动态的方法绑定DATAGRID的列,那么你在绑定的时候好像可以直接为每一列设置列宽,列绑定完后,列宽的值同时也被记录下来,这样不是就不用取值了吗?
    或者就用“水中日月”的方法试试,我没试过。
    我这有个动态绑定的例子,你看看:
    (下面这个类用于根据数据集自动产生模板列,并绑定数据)
    Public Class DataColumnTemplate
        Implements System.Web.UI.ITemplate    Dim templateType As ListItemType
        Dim dataString As String
        Dim _col_id As Integer = -1    Public Sub New(ByVal type As ListItemType, ByVal dataText As String, ByVal col_id As Integer)
            templateType = type
            dataString = dataText
            Me._col_id = col_id
        End Sub    Public Sub InstantiateIn(ByVal container As System.Web.UI.Control) Implements System.Web.UI.ITemplate.InstantiateIn
            Dim literal_header As Literal = New Literal        Dim literal_item As Literal = New Literal        Select Case (templateType)
                Case ListItemType.Header
                    literal_header.Text = "<B>" + dataString + "</B><br>"
                    container.Controls.Add(literal_header)
                    Exit Select
                Case ListItemType.Item
                    container.Controls.Add(literal_item)
                    'literal_item.DataBinding.
                    AddHandler literal_item.DataBinding, AddressOf literal_item_DataBinding
                    Exit Select
            End Select
        End Sub    Private Sub literal_item_DataBinding(ByVal sender As Object, ByVal e As EventArgs)
            Dim lc As New Literal
            lc = sender
            Dim container As System.Web.UI.WebControls.DataGridItem = lc.NamingContainer
            Dim drv As System.Data.DataRowView = container.DataItem
            lc.Text += drv(Me.dataString).ToString()
            If IsDate(lc.Text.ToString) Then
                Dim ss As System.DateTime
                ss = Convert.ToDateTime(lc.Text)
                lc.Text = ss.ToString("yyyy-MM-dd")
            End If    End SubEnd Class
    (下面是对上述类的引用,用于设置列宽等等)
        Public Sub DataGridDataBindEdit(ByVal dg As DataGrid, ByVal _ReportDataTable As DataTable)
            Dim i As Integer        dg.AutoGenerateColumns = False
            dg.DataSource = _ReportDataTable.DefaultView
            'If Not IsPostBack Then
            For i = 0 To _ReportDataTable.Columns.Count - 1
                Dim col As System.Data.DataColumn = _ReportDataTable.Columns(i)
                Dim GCol As System.Web.UI.WebControls.TemplateColumn = New TemplateColumn
                GCol.HeaderTemplate = New DataColumnTemplate(ListItemType.Header, col.Caption, i)
                GCol.ItemTemplate = New DataColumnTemplate(ListItemType.Item, col.ColumnName, i)
                GCol.ItemStyle.Width = Unit.Pixel(120)
                dg.Columns.Add(GCol)
            Next
            'End If
            'dg.DataBind()
        End Sub希望有用吧。
      

  3.   

    动态生成时,设置宽度。然后再获取。否则的话,时获取不到的。
    我想知道客户端如何实现..
    javascript我不懂的。呵呵
      

  4.   

    我不是说Webform的,我说的是Winform,请高手来帮一下忙!!!