WPF数据绑定DataGrid

时间:2022-03-30 16:17:14

1、sqlite3辅助类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SQLite;
using System.Data;
using System.Data.Common;
using System.Windows.Forms;

//SQLite辅助类
namespace Utils
{
public class SqlLiteHelper
{
public static string ConnSqlLiteDbPath = string.Empty;


public static string ConnString
{


get
{


return string.Format(@"Data Source={0}", ConnSqlLiteDbPath);


}


}
// 取datatable


public static DataTable GetDataTable(out string sError,string sSQL)


{


DataTable dt = null;


sError = string.Empty;





try


{


SQLiteConnection conn = new SQLiteConnection(ConnString);


conn.Open();


SQLiteCommand cmd = new SQLiteCommand();


cmd.CommandText = sSQL;


cmd.Connection = conn;


SQLiteDataAdapter dao = new SQLiteDataAdapter(cmd);


dt = new DataTable();


dao.Fill(dt);


}


catch (Exception ex)


{


sError = ex.Message;
MessageBox.Show(sError, "数据库连接异常");



}





return dt;


}





// 取某个单一的元素


public static object GetSingle(out string sError, string sSQL)


{


DataTable dt = GetDataTable(out sError, sSQL);


if (dt != null && dt.Rows.Count > 0)


{


return dt.Rows[0][0];


}





return null;


}





// 取最大的ID


public static Int32 GetMaxID(out string sError, string sKeyField,string sTableName)


{


DataTable dt = GetDataTable(out sError, "select ifnull(max([" + sKeyField + "]),0) as MaxID from [" + sTableName + "]");


if (dt != null && dt.Rows.Count > 0)


{


return Convert.ToInt32(dt.Rows[0][0].ToString());


}





return 0;


}





// 执行insert,update,delete 动作,也可以使用事务


public static bool UpdateData(out string sError, string sSQL,bool bUseTransaction=false)


{


int iResult = 0;


sError = string.Empty;





if (!bUseTransaction)


{


try


{


SQLiteConnection conn = new SQLiteConnection(ConnString);


conn.Open();


SQLiteCommand comm = new SQLiteCommand(conn);


comm.CommandText = sSQL;


iResult = comm.ExecuteNonQuery();


}


catch (Exception ex)


{


sError = ex.Message;


iResult = -1;


}


}


else // 使用事务


{


DbTransaction trans =null;


try


{


SQLiteConnection conn = new SQLiteConnection(ConnString);


conn.Open();


trans = conn.BeginTransaction();


SQLiteCommand comm = new SQLiteCommand(conn);


comm.CommandText = sSQL;


iResult = comm.ExecuteNonQuery();


trans.Commit();


}


catch (Exception ex)


{


sError = ex.Message;


iResult = -1;


trans.Rollback();


}


}





return iResult >0;


}





}


}



 数据源sqlite3数据库Data目录,添加文件Store.db数据库;生成操作:内容;是否输出到目录:总是

WPF数据绑定DataGrid


WPF数据绑定DataGrid

主窗口添加DataGrid控件

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Utils;
using System.IO;
using System.Data;

namespace WpfApplication1
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
InitDB();

}
private void InitDB()
{
string sql = "select * from Products";
DataTable dt = GetDataTable(@"Data\Store.db", sql);
this.dataGrid1.ItemsSource = dt.DefaultView;
}
private void button1_Click(object sender, RoutedEventArgs e)
{

}
private DataTable GetDataTable(string sqldbpath, string sql)
{
SqlLiteHelper.ConnSqlLiteDbPath = sqldbpath;
string sError = "";

return SqlLiteHelper.GetDataTable(out sError, sql);


}
}
}

XAML代码

<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="34,21,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
<DataGrid AutoGenerateColumns="False" Height="210" HorizontalAlignment="Left" Margin="0,89,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="437" Grid.Column="5" Grid.Row="5">
<DataGrid.Columns >
<DataGridTextColumn Header="产品ID" Binding="{Binding Path=ProductID}"/>
<DataGridTextColumn Header="分类ID" Binding="{Binding Path=CategoryID}"/>
<DataGridTextColumn Header="ModelName" Binding="{Binding Path=ModelName}" />
<DataGridTextColumn Header="ModelNumber" Binding="{Binding Path=ModelNumber}"></DataGridTextColumn>
<DataGridTextColumn Header="ProductImage" Binding="{Binding Path=ProductImage}"/>
<DataGridTextColumn Header="单价" Binding="{Binding Path=UnitCost}"/>
<DataGridTextColumn Header="描述" Binding="{Binding Path=Description}" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>

结果:

WPF数据绑定DataGrid