学习wpf,连接数据库和linq for mysql

1、参考以前博文,恢复在 Vs2010+linQ for Mysql的环境。

2、建立 wpf工程,参照1,生成 datacontext.cs ,并拷入几个动态库、DBHelper.cs ,添加程序配置文件 app.config,并参照1例子工程进行修改;

3、参考以下博文数据源之 Datatable,并利用DBHelper类的GetDataTableBySql方法,生成GetDataTable(),分别实践 listbox 、listview两种绑定方法。

4、继续修改为 linq for mysql 的 绑定方法

前台不变;

后台把数据源整合为 test()

private void test()
{
using (MySqlConnection conn = new MySqlConnection(dbServer))
{
Equipment db = new Equipment(conn);
var q = (from i in db.Hardware
select new { i.Model, i.Name, i.Site }).ToList();
listView2.DataContext = q;
}
}

运行结果与上面相同;

http://www.cnblogs.com/linlf03/archive/2011/09/06/2168440.html

一、Binding是WPF的核心,WPF的数据源有以下几种:

  1、ADO.NET中的DataTable

  2、xml数据源

  3、object数据源

  4、元素控件属性

二、WPF绑定各种数据源索引

WPF 绑定各种数据源之Datatable

WPF绑定各种数据源之object数据源

WPF绑定各种数据源之xml数据源

WPF绑定各种数据源之元素控件属性

WPF 绑定基础

三、这里做一些简单的实例。

1.ListBox绑定Datatable数据源

前台代码

<ListBox Margin="12,32,12,329" ItemsSource="{Binding}" Name="listBox1">
        <ListBox.ItemTemplate>
            <DataTemplate>          
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="0.5*"/>
                        <ColumnDefinition Width="0.5*"/>
                        <ColumnDefinition Width="0.5*"/>
                    </Grid.ColumnDefinitions> 
                    <TextBlock Text="{Binding Path=ID}"/>
                    <TextBlock  Text="{Binding Path=Name}"/>
                    <TextBlock Grid.Column="1" Text="{Binding Path=Age}" Background="{Binding Path=Age, Converter={StaticResource BackgroundConverter}}"/>
                </Grid>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

后台代码: 

public Window1()
 {
     InitializeComponent();
     listBox1.DataContext = GetDataTable();
     //使用ItemsSource的形式
  //listBox1.ItemsSource = GetDataTable().DefaultView;
     listBox1.SelectedIndex = 0;
 
 }

  下面是创建DataTable数据源,当然也可以连接数据库获得数据源

private DataTable  GetDataTable()
    {
        DataTable data = new DataTable("MyDataTable");
         
        DataColumn ID = new DataColumn("ID");//第一列
        ID.DataType = System.Type.GetType("System.Int32");
        //ID.AutoIncrement = true; //自动递增ID号
        data.Columns.Add(ID);
 
        //设置主键
        DataColumn[] keys = new DataColumn[1];
        keys[0] = ID;
        data.PrimaryKey = keys;
 
        data.Columns.Add(new DataColumn("Name",typeof(string)));//第二列
        data.Columns.Add(new DataColumn("Age",typeof(string)));//第三列
 
        data.Rows.Add(1,"  XiaoM","  20");
        data.Rows.Add(2,"  XiaoF","  122");
        data.Rows.Add(3,"  XiaoA", "  29");
        data.Rows.Add(4,"  XiaoB", "  102");
        return data;
    }

  下面是类型转换

public class BackgroundConverter : IValueConverter
{
    #region IValueConverter Members
 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        Color color = new Color();
        int num = int.Parse(value.ToString());
        if (num > 100)
            color = Colors.Yellow;
        else if (num < 50)
            color = Colors.LightGreen;
        else
            color = Colors.LightPink;
        return new SolidColorBrush(color);
    }
 
    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
 
    #endregion
}

  

效果图:

2、使用ListView的形式绑定DataTable数据源,数据源与第一个是一样的,不同的地方是:

前台代码:

<ListView Height="262" Margin="-12,0,12,39" VerticalAlignment="Bottom" ItemsSource="{Binding}" Name="listView2" HorizontalAlignment="Center">
          <ListView.View>
              <GridView>
                  <GridViewColumn Header="编号" DisplayMemberBinding="{Binding Path=ID}"  Width="100" />
                  <GridViewColumn Header="姓名" DisplayMemberBinding="{Binding Path=Name}" Width="100"/>
                  <GridViewColumn Header="年龄" Width="100">
                      <GridViewColumn.CellTemplate>
                          <DataTemplate>
                              <TextBlock Grid.Column="1" Text="{Binding Path=Age}" Foreground="{Binding Path=Age, Converter={StaticResource BackgroundConverter}}"/>
                          </DataTemplate>
                      </GridViewColumn.CellTemplate>
                  </GridViewColumn>
             </GridView>
          </ListView.View>
      </ListView>

  

  后台代码:

listView2.DataContext = GetDataTable().DefaultView;

  效果图:

3、如果数据源已经是DataTable,则使用LINQ检索结果的形式为:

DataTable dt = GetDataTable();
listView2.ItemsSource =
    from row in dt.Rows.Cast<DataRow>()
    where Convert.ToString(row["Name"]).StartsWith("XiaoF")
    select new Student()
    {
        ID = int.Parse(row["ID"].ToString()),
        Name = row["Name"].ToString(),
        Age = row["Age"].ToString()
    };

其它不变.上面的代码是检索Name以XiaoF开始的数据,只有一条数据。 效果图如下:

VS2010+WPF+LINQ for MySQL的更多相关文章

  1. 水晶报表在vs2010 WPF环境下的尝试

    原文:水晶报表在vs2010 WPF环境下的尝试 由于VS2010没有集成水晶报表组件,尝试前必须先安装 水晶报表 for VS2010,若机器未安装的可点击这里>>>下载安装 新建 ...

  2. DBLinq (MySQL exactly) Linq To MySql(转)

    Linq to SQL很好用,可惜只支持Microsoft SQL Server 和Microsoft SQL Server Compact Edition,目前比较成熟的免费解决方法是DBLinq( ...

  3. DBLinq (MySQL exactly) Linq To MySql

    http://blog.csdn.net/feihu_guest/article/details/7346948 DBLinq (MySQL exactly) Linq To MySql http:/ ...

  4. 借助linq2db使用Linq访问MySQL

    linq2db (@github)支持Linq访问多种数据库.使用它操作MySQL非常简单,但使用方式上有一些“新奇”,特记录一下. 下载安装(@NuGet)以及使用教程(@For MySQL). 使 ...

  5. vs2013 linq to mysql

    安装文件 1.下载安装文件 2.创建项目 3.创建mysql数据连接 4.新建ADO.NET数据模型 项目实现代码 using (WorkerContainer db = new WorkerCont ...

  6. Vs2010 WPF 项目打包

    [转]图解WPF程序打包全过程 首先打开已经完成的工程,如图: 下面开始制作安装程序包. 第一步:[文件]——[新建]——[项目]——安装项目. 名称——可以自己根据要求修改. 位置——是指你要制作的 ...

  7. WPF DataGrid显示MySQL查询信息,且可删除、修改、插入 (原发布 csdn 2018-10-13 20:07:28)

    1.入行好几年了,工作中使用数据库几率很小(传统行业).借着十一假期回家机会,学习下数据库. 2.初次了解数据库相关知识,如果本文有误,还望告知. 3.本文主要目的,记录下wpf界面显示数据库信息,且 ...

  8. wpf linq数据库无法插入

    最近做wpf应用程序,遇到一个很奇怪的问题,我用代码往数据库里插入数据成功了,但去vs的服务器资源管理器里查看数据库总是最开始的样子,什么都没有插入进去,然后就检查代码,打日志查看sql语句,发现都没 ...

  9. vs2010 EF4.0 访问mysql

    需要安装mysql-connector-net-6.3.5 6.8.9的安装完后在dbfirst里找不到对应的提供程序 链接字符串里需要 指定下编码(如果不是gbk的话) <add name=& ...

随机推荐

  1. JS实时获取输入框中的值

    实时获取input输入框中的值需要oninput和onpropertychange属性来实现.原因是onpropertychange属性为IE专属,而oninput属性支持大部分浏览器包括IE9及以上 ...

  2. [easyUI] 列表

    一. 简述: 对一个层级的ul/ol进行调用menu()函数,即可简单做成层叠列表. 二. 实例: <ul id="menu3"> <li>Menu1 &l ...

  3. 『Python』源码解析_从ctype模块理解对象

    1.对象的引用计数 从c代码分析可知,python所有对象的内存有着同样的起始结构:引用计数+类型信息,实际上这些信息在python本体重也是可以透过包来一窥一二的, from ctypes impo ...

  4. PythonWEB框架之Tornado

    前言 Tornado(龙卷风)和Django一样是Python中比较主流的web框架,Tornado 和现在的主流 Web 服务器框架也有着明显的区别:Tornado自带socket,并且实现了异步非 ...

  5. 码云git使用五(创建远程分支和更新远程分支)

    1.创建一个与远程分支没有关联的本地分支 2.从远程拉取到本地分支 3.创建远程分支() 4.搞定了.

  6. SpringCloud服务负载均衡实现原理01

  7. 密码机制(PGP)

    01 PGP概念 02 PGP认证加密体系

  8. UVa 10970 - Big Chocolate 水题 难度: 0

    题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...

  9. Jmeter对HTTP请求压力测试、并发测试的简单使用方法

    对于服务器性能测试这块的经验更是少得可以忽略.迫使不得不让我们去尝试了解测试的知识. 首先我们的需求场景如下: 服务器硬件:(只有一台) 系统:Windows 2003 WebServer:Tomca ...

  10. Kerberos主从配置文档

    Kerberos主从配置文档   1. Kerberos主从同步机制 在Master上通过以下命令同步数据: kdb5_util dump /var/kerberos/krb5kdc/slave_db ...