2012-03-02 4 views
7

これはうまくいくことを期待しています。Im書き込みと請求書発行アプリケーションで、現在の請求書をBLOBフィールドに格納できる配列に保持したいと考えています。これはアーカイブの変更などにも使用されます。CGridViewのデータソースとして配列を使用する

請求書の販売明細は、CGridViewを使用して表示されます。唯一のことは、データソースがIDataProviderであると書かれていることです。私はその後、私の見解でこれをやりたい

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

: - サイドノートを

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

私は私のDBに全体のオブジェクトを格納するが、これに似たものはありません。永久記憶装置は一連のテーブルであり、これはブラウザエラーなどのアクティブなレコードを保持するために使用されます。現在のシステムではテーブル内でこれを直接行いますが、並行インボイス番号と不正確な統計情報につながります。

+0

サイドノートを

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

idが使用して宣言され何卒ご了承下さい。私はグリッドビューにボタンを追加する必要があったが、私は削除ボタンを追加するtreid ..エラーのmesst gettignだった.. –

答えて

14

最初CArrayDataProviderであなたの配列をラップして、CGridViewでそれを使用することができます -

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

答えをありがとう..私は家に帰るときにこれを試してみよう。 –

+0

これは私がした解決策だったまた、より詳しい説明はここにあります:[link] http://www.packtpub.com/article/yii-11-using-zii-components [/ link]。私はidアイテムが渡されるか、またはYiiにcrasheesがあることを確認する必要があります。 –

+0

私にとって、配列を使用する場合、グリッドには10要素しか表示されません。 – Maykonn

4

これは私の問題と解決策を拡張したものです。ムケシュの答えは100%正しい。グリッドにボタンを追加する必要がありましたが、削除ボタンを追加しようとするとエラーが発生しました。あなたがそうのようなボタン配列にURLをspcifyする必要があります。

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

ないが:

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

はこれとかなりの間苦労しました。魅力的に働いた。ありがとう! – jribeiro

関連する問題