2012-03-02 28 views
7

Im hy vọng điều này sẽ hoạt động .. Im viết và lập hóa đơn ứng dụng và muốn giữ hóa đơn hiện tại trong một mảng có thể được đặt trong trường màu. Điều này cũng sẽ được sử dụng cho các thay đổi lưu trữ, v.v.sử dụng một mảng làm nguồn dữ liệu cho CGridView

Các mặt hàng bán của hóa đơn được hiển thị bằng CGridView. Điều duy nhất là tất cả các tài liệu nói rằng nguồn dữ liệu được cho là một IDataProvider. Tôi không muốn để lưu trữ toàn bộ đối tượng trong Db của tôi, nhưng một cái gì đó tương tự như sau:

invoice->array(
       InvoiceHeader->array(//header information), 
       InvoiceItems->array(
            item_1->array( 
               item_id-> '1', 
               item_count->'3', 
               .... 
               ), 
            ), 
       ), 

Sau đó tôi muốn làm điều này trong quan điểm của tôi:

$this->widget('zii.widgets.grid.CGridView', array(
       'dataProvider'=>$this->invoiceItems, 
      )); 

- mặt lưu ý. Lưu trữ vĩnh viễn là một loạt các bảng, điều này sẽ được sử dụng để giữ hồ sơ hoạt động bao gồm các lỗi trình duyệt, vv Hệ thống hiện tại thực hiện điều này trực tiếp trong bảng nhưng dẫn đến số hóa đơn không đồng thời và số liệu thống kê không chính xác.

+0

Side lưu ý. Tôi cần phải thêm các nút vào GridView nhưng đã gettign một lỗi messge khi tôi treid để thêm một nút xóa .. –

Trả lời

14

lần đầu tiên bạn có thể bọc mảng của bạn trong CArrayDataProvider và sau đó sử dụng nó trong CGridView -

$invoiceItemsDataProvider = new CArrayDataProvider($this->invoiceItems); 
$this->widget('zii.widgets.grid.CGridView', array(
       'dataProvider'=>$invoiceItemsDataProvider, 
      )); 
+0

Cảm ơn câu trả lời .. Tôi sẽ cung cấp cho thử này khi tôi về nhà .. –

+0

đây là giải pháp tôi đã tìm kiếm .. cũng là một lời giải thích chi tiết hơn là ở đây: [link] http://www.packtpub.com/article/yii-11-using-zii-components [/ link]. Tôi phải đảm bảo rằng một mục id được thông qua hoặc Yii có tai nạn. –

+0

Đối với tôi, khi sử dụng một mảng, chỉ có 10 phần tử được hiển thị trên lưới. – Maykonn

4

Đây là một phần mở rộng cho vấn đề và giải pháp của tôi. Câu trả lời của Mukesh là chính xác 100%. nhưng tôi cần thêm các nút vào lưới nhưng khi tôi cố gắng thêm nút xóa, tôi đã gặp lỗi. Bạn cần phải spcify url trong mảng nút như vậy:

array(// delete button 
     'class'=>'CButtonColumn', 
     'template'=>'{delete}', 
     'buttons'=>array(
       'delete'=>array(
          'url'=>'Yii::app()->controller->createUrl(\'Invoicing/invoiceBody/test\', array(\'id\'=>$data["id"]))', 
         ), 
       ), 
           ), 

xin vui lòng chú ý đến các id được khai báo bằng cách sử dụng:

array('id', $data['id']) 

không:

array('id', $data->id) 
+0

đấu tranh với điều này trong một thời gian khá dài. làm việc như người ở. cảm ơn! – jribeiro

Các vấn đề liên quan