为什么我不管我怎么在自定义或者属性里调整DataGrid的列宽,等我运行的时候,一点确定,数据搜出来以后,它的列宽又自动变回最开始的样子了,第一列最窄,中间两列等宽,最后一列最宽,不知道为什么啊?
    还有就是,有时我在DataGrid的属性页里改了一些属性后,比如布局里面的宽度后,我运行后,数据仍然可以被搜出来,但显示不出来了,但我要是改一些别的属性,比如“通用”里面的“允许更新”,“有效”;“拆分”里面的“选取框样式”时,运行后数据仍能正常显示,这又是为什么啊?弄的我很郁闷啊

解决方案 »

  1.   

    要在设计时实现一个 DataGrid 控件 
    为您希望访问的数据库创建一个 Microsoft 数据链接 (.UDL) 文件。请参阅“创建 Northwind OLE DB 数据链接”主题,以获得一个示例。 
    在窗体上放置一个 ADO Data 控件,并将其 ConnectionString 属性设置为在第 1 步中所创建的OLE DB 数据源。 
    在这个 Ado Data 控件的 RecordSource 属性中输入一条将返回一个记录集的 SQL 语句。例如, 
    Select * From MyTableName Where CustID = 12 
    在窗体上放置一个 DataGrid 控件,并将其 DataSource 属性设置为这个 ADO Data 控件。 
    右键单击该 DataGrid 控件,然后单击“检索字段”。 
    右键单击该 DataGrid 控件,然后单击“编辑” 
    重新设置该网格的大小、删除、或添加网格的列。 
    右键单击该 DataGrid 控件,然后单击“属性”。 
    使用“属性页”对话框来设置该控件的适当的属性,将该网格配置为所需的外观和行为。
      

  2.   

    用循环处理,一个汉字约为110 tmip,用下面的语句可以实现,英文字母也算一个字,近似的算法 
    DataGrid1.Columns(I).Width = LenB(Trim(rs.Fields(I))) * 120 
      

  3.   

    DataGrid 进行重新绑定会重新创建列信息。
    所以应该在设计时绑定好数据源,在 DataGrid 的右键菜单上选 Retrieve fields 刷新列,然后选右键菜单的 Edit 调整列宽就可以了。
    注意在运行时只能刷新数据,不能调用 ReBind 进行重新绑定。
      

  4.   

    我的是根据列字符的多少自动调节列宽,需要做循环加载,你说的TextWidth是什么?
      

  5.   

    先与数据绑定,再设置列宽。
        
    Private Sub table_Header()
        Set dbg2.DataSource = rst '这是绑定
         dbg2.Columns(0).Width = 980
        dbg2.Columns(0).Caption = " 站点代码"
        dbg2.Columns(1).Width = 1250
        dbg2.Columns(1).Caption = "  手机号码"
        dbg2.Columns(2).Width = 1580
        dbg2.Columns(2).Caption = "      站点IP"
        dbg2.Columns(3).Width = 3200
        dbg2.Columns(3).Caption = "             站点名称"
    End Sub
      

  6.   

    哈哈...还是 MSHflexGrid 好用
      

  7.   

    同意楼上的,如果想简单点,就用下面的代码Set dbg2.DataSource = rst
    for I=0 to rst.Fields.Count - 1
    DataGrid1.Columns(I).Width = LenB(Trim(rst.Fields(I))) * 120 
    next
      

  8.   

    改正一下:
    Set DataGrid1.DataSource = rst
    for I=0 to rst.Fields.Count - 1
    DataGrid1.Columns(I).Width = LenB(Trim(rst.Fields(I))) * 120 
    next