[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-bindings
Subject:    [Kde-bindings] Qyoto: System.Data.DataTable as model for QTableVie
From:       angel ignacio colmenares laguado <angel.ignacio.colmenares () gmail ! com>
Date:       2009-06-24 21:43:00
Message-ID: 3f37f8c90906241443j5a383973v80bd6d8b1fc9794a () mail ! gmail ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


i am implementing a custom model using a System.Data.DataTable, but get
this error:

Fatal error: C# instance has been wrongly GC'd for virtual
0xa3fa3f8->QAbstractItemModel::rowCount(const QModelIndex&) const call.

this is the code:

using System;
using Qyoto;
namespace qtnet
{

    public class TableModelSample
    {

        private QTableView view;
        private TableModel model;
        public TableModelSample()
        {
            System.Data.DataTable table = new System.Data.DataTable();
            table.Columns.Add("Name");
            table.Columns.Add("Age");

            for(int i=0 ; i<1000; i++){
               System.Data.DataRowView drv = table.DefaultView.AddNew();
               drv.BeginEdit();
               drv["Name"]=String.Format("name for {0} is = ", i );
               drv["Age"] =String.Format("age for {0} is = ", i );
               drv.EndEdit();
            }

            model= new TableModel(table.DefaultView);
            view = new QTableView();
            view.SetModel(model);
            view.WindowTitle = "Simple Table Model";
            view.Show();
        }

        public static int Main(string[] args){
              new QApplication(args);
              new TableModelSample();
              return QApplication.Exec();
        }

    }

    public class TableModel:QAbstractTableModel{
        System.Data.DataView model;

        public TableModel(System.Data.DataView model, QObject parent) :
base(parent){
            this.model=model;
        }

        public TableModel(System.Data.DataView
model):this(model,(QObject)null){

        }


        public override int RowCount (QModelIndex parent)
        {
            return model.Count;
        }

        public override int ColumnCount(QModelIndex parent){
           return this.model.Table.Columns.Count;
        }

        public override QModelIndex Parent(QModelIndex index) {
          return new QModelIndex();
         }

         public override QVariant Data(QModelIndex index, int role) {
        if (!index.IsValid())
            return new QVariant();

        if (role != (int) Qt.ItemDataRole.DisplayRole)
            return new QVariant();

        return new QVariant(model[index.Row()][index.Column()].ToString());

       }

    }
}


what is wrong in my code ?


angel ignacio colmenares laguado

[Attachment #5 (text/html)]

i am implementing a custom model using a System.Data.DataTable, but get<br>this \
error:<br><br clear="all">Fatal error: C# instance has been wrongly GC&#39;d for \
virtual 0xa3fa3f8-&gt;QAbstractItemModel::rowCount(const QModelIndex&amp;) const \
call.<br> <br>this is the code:<br><br>using System;<br>using Qyoto;<br>namespace \
qtnet<br>{<br>    <br>    public class TableModelSample<br>    {<br>        <br>      \
private QTableView view;<br>        private TableModel model;<br>  public \
TableModelSample()<br>        {<br>            System.Data.DataTable table = new \
System.Data.DataTable();<br>            table.Columns.Add(&quot;Name&quot;);<br>      \
table.Columns.Add(&quot;Age&quot;);<br>  <br>            for(int i=0 ; i&lt;1000; \
i++){<br>               System.Data.DataRowView drv = table.DefaultView.AddNew();<br> \
drv.BeginEdit();<br>               drv[&quot;Name&quot;]=String.Format(&quot;name for \
{0} is = &quot;, i );<br>  drv[&quot;Age&quot;] =String.Format(&quot;age for {0} is = \
&quot;, i );<br>               drv.EndEdit();<br>            }<br>            <br>    \
model= new TableModel(table.DefaultView);<br>            view = new QTableView();<br> \
view.SetModel(model);<br>            view.WindowTitle = &quot;Simple Table \
Model&quot;;<br>            view.Show();<br>        }<br><br>        public static \
int Main(string[] args){<br>              new QApplication(args);<br>  new \
TableModelSample();<br>              return QApplication.Exec();<br>        }<br>    \
<br>    }<br>    <br>    public class TableModel:QAbstractTableModel{<br>        \
System.Data.DataView model;<br>        <br>  public TableModel(System.Data.DataView \
model, QObject parent) : base(parent){<br>            this.model=model;<br>        \
}<br>        <br>        public TableModel(System.Data.DataView \
model):this(model,(QObject)null){<br>  <br>        }<br>        <br>        <br>      \
public override int RowCount (QModelIndex parent)<br>        {            <br>        \
return model.Count; <br>        }<br>        <br>        public override int \
ColumnCount(QModelIndex parent){<br>  return this.model.Table.Columns.Count;<br>      \
}<br><br>        public override QModelIndex Parent(QModelIndex index) {<br>          \
return new QModelIndex(); <br>         }<br>         <br>         public override \
QVariant Data(QModelIndex index, int role) {<br>  if (!index.IsValid())<br>           \
return new QVariant();<br>        <br>        if (role != (int) \
Qt.ItemDataRole.DisplayRole)<br>            return new QVariant();<br>                \
                <br>        return new \
                QVariant(model[index.Row()][index.Column()].ToString());<br>
       <br>       }<br>        <br>    }<br>}<br><br><br>what is wrong in my code \
?<br><br><br>angel ignacio colmenares laguado<br>



_______________________________________________
Kde-bindings mailing list
Kde-bindings@kde.org
https://mail.kde.org/mailman/listinfo/kde-bindings


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic