我想弄清楚如何使用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 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)
我是这方面的首发,可能完全走错了路,但我似乎无法找出答案 或者如何填写itemssource或datacontext或两者......无论如何不是上面的commentet out选项......
答案 0 :(得分:3)
您必须将数据加载到绑定到数据网格的类实例中。这是我在IronPython中关于WPF数据绑定的article。将其转换为使用DataGrid应该很容易; - )