سؤال

أحاول عرض قائمة العناصر في بيانات DATAGRID من XMLLIST.

<Series no="1">
    <file>
        <filenum>1</epnum>
        <prodnum>4V01</prodnum>
        <title>Series #1 - File #1</title>
    </file>
    <file>
        <filenum>2</epnum>
        <prodnum>4V02</prodnum>
        <title>Series #1 - File #2</title>
    </file>
</Series>
<Series no="2">
    <file>
        <filenum>1</epnum>
        <prodnum>4V01</prodnum>
        <title>Series #2 - File #1</title>
    </file>
    <file>
        <filenum>2</epnum>
        <prodnum>4V02</prodnum>
        <title>Series #2 - File #2</title>
    </file>
</Series>

يسمح لي الكود الحالي باسترداد كل سلسلة إلى Xmllist ، ثم لدي فئة متداخلة تتيح لي القيام بأشياء مثل.

<classes:NestedDataGrid width="100%" height="100%" id="gridFiles" dataProvider="{filesList}" >
<classes:columns>
<mx:DataGridColumn headerText="Season" dataField="@no" width="60"/>
<mx:DataGridColumn headerText="Episode" dataField="file.filenum" width="60"/>
<mx:DataGridColumn headerText="Title" dataField="file.title"/>
</classes:columns>
</classes:NestedDataGrid>

ومع ذلك ، يعرض هذا البيانات مع صفين ، يحتوي الصف الأول على 1 في عمود السلسلة ، ثم تم حشر الملفان في الخلية الثانية في نفس الصف. الصف الثاني هو نفسه ولكن يحتوي على الرقم 2 في عمود السلسلة وملفتي السلسلة رقم 2 في الخلية المجاورة لها.

إذا لم أستخدم فئة البيانات المتداخلة ، فيمكنني سحب الملفات باستخدام series.file بدلاً من ذلك ، وجميع 4 من الملفات الأربعة قائمة بشكل صحيح ، ومع ذلك لا أحصل على رقم السلسلة لكل ...

هل كانت مفيدة؟

المحلول

مع الهيكل الحالي لـ XML ، من الأسهل تمثيله مع شبكة عمود - عمود أول هو رقم السلسلة ، والعمود الثاني هو 2 أو 3 عمود بيانات يعرض تفاصيل الملف. ولكن إذا كنت لا تريد تغيير الهيكل ، فإن الكود التالي هو ما تحتاجه. لاحظ ذلك منذ ذلك الحين dataField لم يتم تعيين الخاصية ، عليك تحديد أ sortCompareFunction لفرز الشبكة استنادًا إلى رقم السلسلة - وإلا فقد يرمي الاستثناءات أثناء محاولة الفرز.

<classes:NestedDataGrid width="100%" height="100%" id="gridFiles" 
  dataProvider="{filesList.Series.file}" >
  <classes:columns><!-- classes copy pasted from OP's code. Whats that? -->
    <mx:DataGridColumn headerText="Season" labelFunction="getSeries" width="60"/>
    <mx:DataGridColumn headerText="Episode" dataField="filenum" width="60"/>
    <mx:DataGridColumn headerText="Title" dataField="title"/>
  </classes:columns>
</classes:NestedDataGrid>
private function getSeries(item:Object, col:DataGridColumn):String
{
  return XML(item).parent().@no;
}

تحديث:

<mx:DataGrid width="100%" height="100%" id="gridFiles" > 
  <mx:columns>
    <mx:DataGridColumn headerText="Season" labelFunction="getSeries" width="60"/>
    <mx:DataGridColumn headerText="Episode" dataField="epnum" width="60"/>
    <mx:DataGridColumn headerText="Title" dataField="title"/>
  </mx:columns>
</mx:DataGrid>

gridFiles.dataProvider = XML(event.result).descendants('episode');
//use the same getSeries function as above
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top