Flex DataGrid中设置,wordWrap=true,页面的高度会自动撑高

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flex DataGrid中设置,wordWrap=true,页面的高度会自动撑高相关的知识,希望对你有一定的参考价值。

[Bindable]
private var tempList:ArrayCollection=new ArrayCollection();
在App的creationComplete方法中添加列表的数据源:
private function init(event:FlexEvent):void

trace("app init:" + dg.width + " " + dg.height);
for (var i:int=0; i < 10; i++)
var obj:Object=; obj.data="A" + i;
if (i % 2 == 0) obj.name=i + "阿杜司法所地方阿杜司法所地方阿杜司法所地方阿杜司法所地方阿杜司法所地方阿杜司法所地方阿杜司法所地方阿杜司法所地方阿杜司法所地方阿杜司";

else

obj.name=i + "测试";

tempList.addItem(obj);


protected function button1_clickHandler(event:MouseEvent):void

trace("button1:" + dg.width + " " + dg.height);
tempList.removeAll();
for (var i:int=0; i < 10; i++)

var obj:Object=;
obj.data="A" + i;
obj.name=i + "少";
tempList.addItem(obj);


protected function button2_clickHandler(event:MouseEvent):void

trace("button2:" + dg.width + " " + dg.height);
tempList.removeAll();
for (var i:int=0; i < 10; i++)

var obj:Object=;
obj.data="A" + i;
if (i % 2 == 0)

obj.name=i + "阿杜司法所地方阿杜司法所地方阿杜司法所地方阿杜司法所地方阿杜司法所地方阿杜司法所地方阿杜司法所";

else

obj.name=i + "测试";

tempList.addItem(obj);


<s:VGroup height="120"
width="350">
<mx:DataGrid id="dg"
height="100%"
width="100%"
wordWrap="true"
variableRowHeight="true"
creationComplete="dg_creationCompleteHandler(event)"
resize="dg_resizeHandler(event)"
dataProvider="tempList">
<mx:columns>
<mx:DataGridColumn headerText="Data"
dataField="data"/>
<mx:DataGridColumn headerText="Name"
dataField="name"/>
</mx:columns>
</mx:DataGrid>
</s:VGroup>
<s:Button label="改变数据(少)"
click="button1_clickHandler(event)"/>
<s:Button label="改变数据(多)"
click="button2_clickHandler(event)"/>
注:可以把数据中的name值修改为更多的值,第一次加载后dg的高度是120,点击“改变数据(少)”或“改变数据(多)”按钮后,dg的高度就会变化
现在不知道怎么解决,它就不会变的很高,就是保持之前的高度?
private var dgHeight:Number = 0; //列表的高度
protected function dg_creationCompleteHandler (event:FlexEvent):void

trace("dg creationComplete:" + dg.width + " " + dg.height);
dgHeight = dg.height;


protected function dg_resizeHandler (event:ResizeEvent):void

trace("dg resize:" + dg.width + " " + dg.height);
// if (dgHeight > 0)
//
// dg.height = dgHeight;
//

你把两个的高度都去掉就可以了,因为你规定了外面容器的高度。所以里面的DataGrid 最大也就是外面容器那么大。 参考技术A 那就不要设置wordWrap=true,不然高度会自己根据内容长度变化的。 参考技术B dg_creationCompleteHandler是怎么写的??

如何在 WPF 中设置 DataGrid 的 DataSource?

【中文标题】如何在 WPF 中设置 DataGrid 的 DataSource?【英文标题】:How to set the DataSource of a DataGrid in WPF? 【发布时间】:2011-07-20 21:14:17 【问题描述】:

我需要将数据库中的表设置为 WPF 中 GridGrid 的数据源。在 Windows 窗体中,该属性称为 DataSource,但在 WPF 中不存在这样的属性,我该怎么做呢?

【问题讨论】:

您的意思是“在 Windows 窗体中”,而不是“在 C# 中”……C# 是一种语言,而不是 UI 框架 我也这么认为,然后继续编辑它,因为 C# 没有任何意义。 是的,我的意思是 Windows 窗体。感谢指正 【参考方案1】:

您可以使用以下两种方式将数据表绑定到 WPF 中的数据网格。

 datagrid.ItemSource = mydt.DefaultView();

 datagrid.DataContext = mydt.DefaultView();

【讨论】:

【参考方案2】:

这是一个简单的例子:

XAML 部分

<DataGrid Name="dataGrid1" Width="866" Height="auto" HorizontalAlignment="Left" VerticalAlignment="Top" />

C#部分

... [读取和填写表格的代码] ...

da.Fill(myDataTable);
dataGrid1.ItemsSource = myDataTable.DefaultView;

现在您的 DataGrid 将被您的 DataTable 填充

【讨论】:

【参考方案3】:

您可以使用ItemsSource 属性:

<ListView ItemsSource="Binding YourData">
    <ListView.View>
        <GridView>
            <!-- The columns here -->
        </GridView>
    </ListView.View>
</ListView>

如果您更喜欢使用代码隐藏而不是绑定,只需为 ListView 命名并在代码中设置 ItemsSource 属性:

listView1.ItemsSource = YourData;

您还可以将ItemsSource 属性与其他列表控件(DataGridListBoxComboBox 等)一起使用,因为它是在ItemsControl 基类中定义的。


编辑:如果数据源是DataTable,则不能直接将其分配给ItemsSource,因为它没有实现IEnumerable,但可以通过绑定来实现:

listView1.SetBinding(ItemsControl.ItemsSourceProperty, new Binding  Source = YourData );

【讨论】:

但是“YourData”你怎么说是一个必须是一个对象?因为如果我像在 Windows 窗体中那样使用 Datatable,它就不起作用。 啊,是的,DataTable 是一个特例......请参阅我的答案中的编辑 但是我还有一个问题,如果我想将数据绑定到 DataGrid,但是如果我已经在 DataGrid 中定义了列,如何将绑定数据放入现有列中? 我需要例如将某些内容设置为 DataGrid 的 DataSource(我已经实现了),但想象一下我在 DataGrid 中已经有列(作为 TextBox 或/和 ComboBox)。通过定义“绑定”属性,我可以成功地将数据作为文本框放入列的单元格中,但是要将数据作为组合框放入列中,我不明白我该怎么做。 您可以使用 DataGridComboBoxColumn。 cmets中我真的不能给你详细的解释,看documentation中的例子【参考方案4】:

据我所知,GridView 是一个视图而不是独立控件,您通常会将其用作ListView 的视图。在 WPF 中,用于数据填充的属性称为 ItemsSource,您可能希望使用 ListViewDataGrid 以这种方式显示您的数据。

【讨论】:

以上是关于Flex DataGrid中设置,wordWrap=true,页面的高度会自动撑高的主要内容,如果未能解决你的问题,请参考以下文章

如何在 WPF 中设置 DataGrid 的 DataSource?

如何在GWT DataGrid中设置标题单元格宽度

在 Silverlight DataGrid 中设置初始排序顺序?

如何在 WPF 的 Datagrid 中设置以编程方式生成的 ComboBox 的启用属性?

无法在 FLEX 中设置容器的 backgroundColor 属性

如何在我的 winforms 应用程序中设置我的 datagrid 滚动条的位置?