CSV в датагрид - PullRequest
       28

CSV в датагрид

1 голос
/ 03 мая 2011

Создание формата CSV из MySQL, который содержит набор данных, теперь я могу импортировать в сетку данных для отображения каждого значения, но у меня есть проблема, значение которого будет отображаться с двойной кавычкой ("1", "2") вместо (1, 2,3 и т. Д.), Как лучше всего удалить двойную кавычку ("")?

"1";"asd@sad.com";"asdasdasd";"1302531993"
"2";"asdasd@asd.com";"werwetewt";"234235"
"3";"asdasd@asd.com";"werwetewt";"234235"

Ответы [ 2 ]

3 голосов
/ 03 мая 2011

Вы можете попробовать что-то вроде следующего:

<?xml version="1.0" encoding="utf-8"?>
<s:Application creationComplete="init(event)" xmlns:fx="http://ns.adobe.com/mxml/2009"
    xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:s="library://ns.adobe.com/flex/spark">
    <fx:Script>
    <![CDATA[
        import mx.collections.ArrayCollection;
        import mx.events.FlexEvent;

        protected function init(event:FlexEvent):void
        {
            var beginningQuotesExp:RegExp = /^\s*"/gm;
            var result:String = csvData.replace(beginningQuotesExp, "");
            var endingQuotesExp:RegExp = /"\s*$/gm;
            result = result.replace(endingQuotesExp, "");
            var bodyQuotesExp:RegExp = /"\s*;\s*"/gm;
            result = result.replace(bodyQuotesExp, ";");
            var splitRegExp:RegExp = /\r*\n+|\n*\r+/gm;
            var lines:Array = result.split(splitRegExp);
            var dataProvider:ArrayCollection = new ArrayCollection();
            for each (var line:String in lines)
            {
                var lineArray:Array = line.split(";");
                var dataObject:Object =
                    { counter: lineArray[0], email: lineArray[1], name: lineArray[2], phone: lineArray[3] };
                dataProvider.addItem(dataObject);
            }
            dg.dataProvider = dataProvider;
        }
    ]]>
    </fx:Script>

    <fx:Declarations>
        <fx:String id="csvData">
            <![CDATA["1";"asd@sad.com";"asdasdasd";"1302531993"
"2";"asdasd@asd.com";"werwetewt" ;  "234235"
"3";"asdasd@asd.com";"werwetewt";"234235"]]>
        </fx:String>
    </fx:Declarations>
    <mx:DataGrid horizontalCenter="0" id="dg" verticalCenter="0">
        <mx:columns>
            <mx:DataGridColumn dataField="counter" headerText="counter" />
            <mx:DataGridColumn dataField="email" headerText="email" />
            <mx:DataGridColumn dataField="name" headerText="name" />
            <mx:DataGridColumn dataField="phone" headerText="phone" />
        </mx:columns>
    </mx:DataGrid>
</s:Application>
1 голос
/ 03 мая 2011

Попробуйте использовать str.replace("\"", "");, где str - строка без полей.String.replace в AS3 находит все вхождения первого аргумента и заменяет их вторым аргументом.Если хотите, оба могут быть регулярными выражениями, но в вашей ситуации простой экранирующий символ \" будет работать просто отлично.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...