【WPF学习笔记】之如何把数据库里的值读取出来然后显示在页面上:动画系列之(六)

......

承接系列五

上一节讲了,已经把数据保存到数据库并且删除数据,本讲是把已经存在的数据从数据库里读取出来,显示在页面上。

主页面后台代码:

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 System.Data.SqlClient;
using User.sqlHelper;
using System.Data;
using System.IO;
using System.Drawing;

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

        string ss = "";
        public static string name = "";
        int id = 0;
        public int usergrade = 1;

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            myHelper.showWarnMessage += new myHelper.ShowWarnMessage(myHelper_showWarnMessage);
        }

        //传递登录界面的用户名
        User_test _u = new User_test();
        void myHelper_showWarnMessage(string _str)
        {
            //获取用户名
            string _msg = _str;
            //传递名字到主页面
            name = tb_name.Text = _msg;
            //根据用户名得到权限
            usergrade = _u.getUserGrade(tb_name.Text);
       //从这里开始
            //申请者权限
            if (usergrade == 0)
            {
                //根据我登录的用户名和id,把word表的信息读取出来
                //查询User表获取用户名和id
                DataSet _ds = _u.GetList();
                if(_ds != null)
                {
                    DataTable _dt = _ds.Tables[0];
                    for (int i = 0; i < _dt.Rows.Count; i++)
                    {
                        int userid = int.Parse(_dt.Rows[i]["UserID"].ToString().Trim());
                        string username = _dt.Rows[i]["UserName"].ToString().Trim();
                        //如果画面登录的用户名与user表的名字一致,则取出表里的id
                        if (tb_name.Text.Equals(username))
                        {
                            id = userid;
                        }
                    }
                }

                Word _w = new Word();
                _ds = _w.GetList();
                if(_ds != null)
                {
                    DataTable _dt = _ds.Tables[0];
                    for (int i = 0; i < _dt.Rows.Count; i++)
                    {
                        int submitterid = int.Parse(_dt.Rows[i]["SubmitterID"].ToString().Trim());
                        //如果word表取出的id与user表id一致,则把word表里的数据都取出来
                        if (id.Equals(submitterid))
                        {
                            //初始化用户控件2的属性,然后一一赋值
                            uc_item item = new uc_item();
                            item.loadCombobox();
                            sp_1.Children.Add(item);
                            Canvas.SetLeft(item, 0);

                            //编号
                            ss = item.tb_id.Text = _dt.Rows[i]["WordID"].ToString().Trim();
                            //提交人
                            item.tb_uploader.Text = _u.getUserName(int.Parse(_dt.Rows[i]["WordID"].ToString().Trim()));
                            //当前状态
                            item.cb_type2.Text = _dt.Rows[i]["CurrentStatus"].ToString().Trim();
                            //提交状态
                            item.cb_type.Text = _dt.Rows[i]["SubmitStatus"].ToString().Trim();
                            //内容
                            item.tb_describe.Text = _dt.Rows[i]["WordDescribe"].ToString().Trim();
                            //提交日期
                            item.dp_date.Text = _dt.Rows[i]["SubmitTime"].ToString().Trim();
                            //最后更新时间
                            item.dp_date2.Text = _dt.Rows[i]["LastTime"].ToString().Trim();

                            //设置数据显示条的高度
                            sp_1.Height = Math.Max(sp_1.Children.Count * 10, 930);

                        }
                    }
                }
            }       //到这里结束
            //审批者权限
            else if (usergrade == 1)
            { 

            }
            //执行者权限
            else if (usergrade == 2)
            { 

            }
        }

        public static bool isnew = false;

        //新建时嵌套另一个用户控件2在主页面上
        private void btn_new_Click(object sender, RoutedEventArgs e)
        {
            isnew = true;
            //新建
            uc_item _ucItem = new uc_item();
            //设置号码初始化
            //编号
            _ucItem.tb_id.Text = "0";
            //登录人
            _ucItem.tb_uploader.Text = this.tb_name.Text;
            //当前状态
            _ucItem.cb_type2.Text = "未";
            //审批状态
            _ucItem.loadCombobox();

            //初始化信息添加到新建中
            sp_1.Children.Add(_ucItem);
            Canvas.SetLeft(_ucItem, 0);
            sp_1.Height = Math.Max(sp_1.Children.Count * 10 ,930);

        }

        private void btn_nosolve_Click(object sender, RoutedEventArgs e)
        {

        }

        private void btn_solve_Click(object sender, RoutedEventArgs e)
        {

        }

        private void btn_back_Click(object sender, RoutedEventArgs e)
        {
            sp_1.Children.Clear();
            my_uc_login.showLogin();
        }

        internal static void VisibilityProperty()
        {
            throw new NotImplementedException();
        }
    }
}

结果图:

点击登录后上一次保存的数据就显示出来了。

时间: 2024-09-15 06:09:04

【WPF学习笔记】之如何把数据库里的值读取出来然后显示在页面上:动画系列之(六)的相关文章

【WPF学习笔记】之 System.Exception 对象名 &#39;XXXX&#39; 无效。

我在运行vs时候发现项目报错,如下图: 报Exception错误,对象名"XXXXXX"无效. 经过调查得知,因为连接数据库的库名写错了,如下: 对应正确数据库的库名: 把库名改正确,问题就解决了. [WPF学习笔记]之 System.Exception 对象名 'XXXX' 无效.

[Spring Data MongoDB]学习笔记--建立数据库的连接

1. 有了上一篇的Mongo后,连接数据库我们还需要更多的信息,比如数据库名字,用户名和密码等. 我们可以继续来配置MongoDbFactory的实例. public interface MongoDbFactory { DB getDb() throws DataAccessException; DB getDb(String dbName) throws DataAccessException; } 然后我们可以继续用MongoDbFactory来创建MongoTemplate的实例. pu

WPF学习笔记4&mdash;&mdash;Layout之2

下面简单介绍常见的面板. 一.Grid 1.Grid关于调整行列距离有三种方法:绝对大小,自动大小,比例大小.如下: <ColumnDefinition Width="100"></ColumnDefinition> <ColumnDefinition Width="Auto"></ColumnDefinition> <ColumnDefinition Width="*"></Co

sqlite学习笔记2:创建数据库

在上一次笔记中最后生成了一个sqlite可执行文件,cd到sqlite所在的目录下面执行: sqlite3 MyDataBase.db 就会创建了一个名叫MyDataBase.db的数据库,在当前路径下面就会生成一个叫MyDataBase.db的文件 #切记不是先运行sqlite3,然后再上述命令,而是在终端直接输入上述命令,否则会报错:Error: near "sqlite3": syntax error 然后运行命令: .databases 可以查看刚刚创建的数据库,退出数据库命令

WPF学习笔记2&mdash;&mdash;XAML之2

三.事件处理程序与代码隐藏 例如,为一个Page添加一个Button控件,并为该Button添加事件名称Button_Click: <Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="ExampleNamespace.ExampleP

WPF学习笔记系列之一 (布局详情)

布局:StackPanel  栈布局:控件不会拐弯且多出的不再显示.DockPanel   停靠布局 吸在上边下边或左右.WrapPanel    环绕布局   一行控件会拐弯Canvas  进行基于坐标的布局 Grid中若不指定Grid.Row属性及Grid.Column则默认为:0行,0列.RowDefinitions ColumnDefinitions ShowGridLines=true <ColumnDefinition Width="100"></Colu

Sharepoint2013商务智能学习笔记之部署AdventureWorksDW2012数据库(三)

AdventureWorksDW2012是sql server2012的样本数据库,后面做商务智能Demo会用到,所以需要下载并安装到sql server2012上,下载地址 第一步,下载数据库 第二步,进入Sql server management studio,点击数据库右键附加下载好的 AdventureWorksDW2012数据库,附加时候记得删除数据库日志. 第三步,在做商务智能demo,连接多维数据源的时候需要用到微软Analysis Services Tutorial SQL Se

sqlite学习笔记3:附加数据库和分离数据库

在前面说了如果创建一个数据库,接下来我们需要操作数据库: 但是sqlite3命令一次只能操作一个数据库,如果当前路径下有多个数据库该怎么办呢?这就需要用到附加数据库. 一  关联数据库 附加数据库实际上就是告诉sqlite3,你写的SQL语句是操作的哪一个数据库.具体如何操作呢? 基本语法如下: ATTACH DATABASE 'DatabaseName' As 'Alias-Name'; *sqlite3中的语句都需要以分好结束 使用上面的命名,如果数据库存在,将会被关联到'Alias-Nam

学习笔记(十三)——数据库备份还原的知识点与注意事项

学习笔记(十三)——数据库备份还原的知识点与注意事项 一.备份还原基本概念 1.  完整备份:完整备份因为需要备份的数据量大,所以需要在空闲时间进行,并且定期进行. 2.  日志备份:日志备份的数据量小,备份时间为上一次备份到本次本分期间的数据,每天都可以进行备份,或者每小时都可以进行备份,据所需备份. 3.  增量备份(差异备份):只备份修改过的数据,与每小时进行的日志备份配合使用,效率更高. 二.备份设备 1.          在进行备份数据的保存时,需要输入的文件路径很长,并且每次都要输