Xml 自定义Datagrid列可见性

Xml 自定义Datagrid列可见性,xml,datagrid,flex4,Xml,Datagrid,Flex4,我正在用XML文件中的数据加载datagrid,如下例所示。我的XML文件由4列数据组成,这些数据显示在我的datagrid中。但是,我希望datagrid仅基于我提供的ArrayList显示某些列。在本例中,ArrayList由两列组成,即Id和Name。我想知道做我想做的事情的最佳方式是什么。事实上,我已经加载了网格,我想遍历列,检查列名是否包含在列表中,如果不可见,我将其宽度设置为零 Or is there another way whereby before loading the gr

我正在用XML文件中的数据加载datagrid,如下例所示。我的XML文件由4列数据组成,这些数据显示在我的datagrid中。但是,我希望datagrid仅基于我提供的ArrayList显示某些列。在本例中,ArrayList由两列组成,即Id和Name。我想知道做我想做的事情的最佳方式是什么。事实上,我已经加载了网格,我想遍历列,检查列名是否包含在列表中,如果不可见,我将其宽度设置为零

Or is there another way whereby before loading the grid itself I can do checks between the datagrid dataProvider and the ArrayList, and then populate the grid accordingly. So here the visible attribute will not be used.

Anyone who can put some light on this?


MY MXML
 <?xml version="1.0" encoding="utf-8"?>
    <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
                   xmlns:s="library://ns.adobe.com/flex/spark" 
                   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
        <fx:Declarations>
            <fx:XML id="order"  source="orderlist.xml"/>
            <s:XMLListCollection id="show" source="{order.order}"/>
        <s:ArrayList id="mylist">
            <String>Id</String>
                <String>Name</String>
    </s:ArrayList>
        </fx:Declarations>
        <mx:DataGrid dataProvider="{show}" rowCount="4">
            <mx:columns>
                <mx:DataGridColumn headerText="Order number" dataField="Id" />
                <mx:DataGridColumn headerText="Name" dataField="Name" />
                <mx:DataGridColumn headerText="Surname" dataField="Surname" />
                <mx:DataGridColumn headerText="Age" dataField="Age"/>
            </mx:columns>
        </mx:DataGrid>

        <s:Button id="test_btn" click="Handler_to_set_DatagridColumns();"/>


    </s:Application>



MY XML FILE

    <?xml version="1.0" encoding="utf-8"?>
    <Orderlist>
        <order Id="1" Name="Albert" Surname="Schineider" Age="45"/>
        <order Id="2" Name"Sara" Surname="Gutierrez" Age="25"/>
        <order> Id="3" Name="Alain" Surname='Bulquee" Age="40"/>    
    </Orderlist>



Thanks for your help.

公共类MyDataGridTextColumn:DataGridTextColumn { 地区公众能见度

public static readonly DependencyProperty MyVisibilityProperty =
    DependencyProperty.Register("MyVisibility", typeof(Visibility), typeof(MyDataGridTextColumn), new PropertyMetadata(Visibility.Visible, OnMyVisibilityPropertyChanged));

private static void OnMyVisibilityPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
    var @this = d as MyDataGridTextColumn;

    if (@this != null)
    {
        @this.OnMyVisibilityChanged((Visibility)e.OldValue, (Visibility)e.NewValue);
    }
}

private void OnMyVisibilityChanged(Visibility oldValue, Visibility newValue)
{
    Visibility = newValue;
}

public Visibility MyVisibility
{
    get { return (Visibility)GetValue(MyVisibilityProperty); }
    set { SetValue(MyVisibilityProperty, value); }
}

#endregion public Visibility MyVisibility
}