WPF数据绑定DataGrid

来源:互联网 发布:软件生存周期 活动 编辑:程序博客网 时间:2024/05/04 06:21

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数据库;生成操作:内容;是否输出到目录:总是



主窗口添加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>

结果:



 






 


 






 


 


 


   
0 0
原创粉丝点击