Использование wpf datagrid с ironpython и sqlite3 - PullRequest
1 голос
/ 03 октября 2010

Я пытаюсь выяснить, как заставить использовать IronPython (2.6) wpf и sqlite3 (я использую Ironpython.SQLite.dll)

Я немного застрял в том, как использовать сетку данных wpf.

Может ли кто-нибудь еще помочь мне в том, как кодировать, чтобы заполнить сетку данных

данными из базы данных sqlite, сделанной здесь.

Ниже приведен код того, какдалеко я получил ... 1-й файл Python XAML

                <Grid>
                      <DataGrid Name="mydatagrid" ItemsSource="{Binding}" ColumnWidth="300" RowHeight="20" AutoGenerateColumns="True" Margin="12,370,242,25"  GridLinesVisibility="All" CanUserResizeRows="False">
                        <DataGrid.Columns>
                            <DataGridTextColumn Binding="{Binding}" Header="Header" />
                            <DataGridTextColumn Header="Header" />
                            <DataGridTextColumn Header="Header" />
                        </DataGrid.Columns>
                      </DataGrid>
                </Grid>
            </Window> 

Ant, а затем ниже здесь код Python
myapp.py import sys import nt import clr

            clr.AddReference('PresentationFramework')

            from System.IO import FileMode, FileStream
            from System.Windows import Application
            from System.Windows.Markup import XamlReader

            stream = FileStream('Myxaml.xaml', FileMode.Open)
            window = XamlReader.Load(stream)
            window.Title='My Program'

            sys.path.append(nt.getcwd())
            clr.AddReferenceToFile("IronPython.SQLite.dll")
            sys.path.append("C:\Program Files (x86)\IronPython 2.6 for .NET 4.0\Lib") 

            import os
            import _sqlite3
            from _sqlite3 import *


            DB_NAME = 'mydb.s3db'

            if not os.path.exists(DB_NAME):
                #create new DB if not exist, 
                con = _sqlite3.connect(DB_NAME)
                con.execute(''' CREATE TABLE [mytable] 
                (
                    [key] INTEGER  NOT NULL PRIMARY KEY AUTOINCREMENT,
                    [desc] NVARCHAR(30)  NULL,
                    [count1] FLOAT DEFAULT '0' NULL,
                    [count2] FLOAT DEFAULT '0' NULL
                    )''')        
                con.execute('''insert into mytable (desc,count1,count2) values ("part1",1.4,10)''')
                con.execute('''insert into mytable (desc,count1,count2) values ("part2",2.4,20)''')
                con.execute('''insert into mytable (desc,count1,count2) values ("part3",3.4,30)''')
                con.execute('''insert into mytable (desc,count1,count2) values ("part4",4.4,40)''')
                con.execute('''insert into mytable (desc,count1,count2) values ("part5",5.4,50)''')
                con.execute('''insert into mytable (desc,count1,count2) values ("part6",6.4,60)''')
                con.commit()
            else:
                #use existing DB
                con = _sqlite3.connect(DB_NAME)

            grid1 = window.FindName('mydatagrid')
            cur=con.cursor()
            cur.execute("SELECT * FROM mytable")
            #grid1.ItemsSource=cur.fetchone()
            #grid1.DataContext=cur.fetchall()
            #print cur.fetchall()
            app = Application()
            app.Run(window)

Ястартер в этом и может быть совершенно не на том пути, но я не могу выяснить, что или как заполнить источник элемента или текстовый текст или и то, и другое ... в любом случае не с указанными выше параметрами комментирования ......

1 Ответ

3 голосов
/ 04 октября 2010

Вы должны загрузить свои данные в экземпляр класса, связанный с сеткой данных. Вот моя статья о привязке данных WPF в IronPython. Преобразовать его для использования DataGrid должно быть легко; -)

...