zoukankan      html  css  js  c++  java
  • DataGridView绑定数据源

          给DataGridView绑定数据源比較简单,方法主要有两种:

    1、直接在控件属性中绑定数据源。这样的方法最简单,但它是直接连接数据库的。这样就和传DataTable的后果差点儿相同了,所以还是尽量避开吧。

    2、通过代码将实体集合作为DataGridView的数据源,如今以《添加删除用户》窗口为例来简介下

    窗口界面

          功能介绍:当用户级别改变时,表格控件中显示该用户级别的用户信息

     

          编辑控件:右击控件选中“加入列”——进行列的加入和编辑。编辑时须要用的仅仅有三个

     

          (1)是列名。这个可改可不改(2)是与实体中相应的属性名称(3)是表头信息,这三个也能够在代码中写。假设不设置Name属性,在载入数据的时候将自己主动改为作为数据源的实体的属性名,在删除不须要字段的时候能够用得着。

    U层代码

        Private Sub cboLevel_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboLevel.SelectedIndexChanged
            Dim euserIn As New E_UserInfo
            Dim bselectUser As New B_AddRemoveUser
            Dim userList As New List(Of E_UserInfo)
            'Dim userBindList As New BindingList(Of E_UserInfo)             '将BindingList作为数据源遇到问题。先省略
    
            euserIn.Level = cboLevel.GetItemText(cboLevel.SelectedItem)     '获取用户级别组合框的当前文本,并传递给E层
            userList = bselectUser.SelectUserInfo(euserIn)                  '将查询到的信息保存在euserStore中
    
            '假设集合中没有记录,退出该过程
            If userList.Count = 0 Then
                Exit Sub
            End If
    
            dtgUserInfo.AutoGenerateColumns = False             '不同意自己主动加入列
            dtgUserInfo.DataSource = userList                   '把泛型集合当做DataGridView的数据源
    
            '删除不须要显示的字段
            dtgUserInfo.Columns.Remove("Password")
            dtgUserInfo.Columns.Remove("Level")
    
            '将DataGridView的标题改为中文,在控件属性中已经设置,这里就能够省去了
            'dtgUserInfo.Columns(0).HeaderText = "username"
            'dtgUserInfo.Columns(1).HeaderText = "姓名"
            'dtgUserInfo.Columns(4).HeaderText = "开户人"
    
        End Sub

    B层代码

    Imports Entity.entity
    Imports DAL.dal
    Imports System.Collections
    Public Class B_AddRemoveUser
        Public Function SelectUserInfo(ByVal user As E_UserInfo) As IList
            Dim userList As New List(Of E_UserInfo)
            Dim dUser As New D_UserDAO
    
            userList = dUser.SelectUserInfo(user)       '将用户信息传入D层
    
            Return userList                             '返回用户信息
        End Function
    
        Public Function DeleteUser(ByVal user As E_UserInfo) As Boolean
            Dim dUser As New D_UserDAO
            Return dUser.deleteUser(user)       		'返回数据库删除用户是否成功
        End Function
    End Class

    D层代码

        Public Function SelectUserInfo(ByVal user As E_UserInfo) As IList
            Dim mySqlHelper As New SqlHelper        '实例化SqlHelper
            Dim dt As New DataTable                 '定义一个DataTable数据表
            Dim cmdText As String = "Select UserID, UserName, Operator From T_UserInfo Where Level=@Level"
            Dim paras As SqlParameter() = {New SqlParameter("@Level", user.Level)}  '将參数传入SqlHelper
            dt = mySqlHelper.ExecSelect(cmdText, CommandType.Text, paras)           '运行查询
    
            Dim myList As New List(Of E_UserInfo)                       '定义一个集合用来保存转化后的泛型集合
            myList = ConvertHelper.ConvertToList(Of E_UserInfo)(dt)     '调用实体转换类,将DataTable转换为泛型集合
    
            Return myList           		'返回实体集合
        End Function

           这样就是能用DataGridView显示我们须要的信息了,这样的方法easy忽略导致出错的地方有两个:1、数据库表中的字段名和实体中的属性名不一样。

    2、实体的属性名和DataGridView中自己定义的数据名不一样。如果是由于第2种出错。那仅仅能说太粗心了。如今给出第1种的解决方法,先如果一个情景:数据库表中“username”的字段名是“UserNo”,实体中对应的属性名是“UserID”,这样就导致了信息不匹配的问题。所以须要转化一下,最简单的就是利用As把上边D层的查询代码改为

          "Select  UserNo As UserID , UserName, Operator From T_UserInfo Where Level=@Level"

          As对数据库字段的转换功能很有意思。本来想用数据库演示一下的。仅仅是SQL软件还没好就算了吧……

     

     

     

     

     

  • 相关阅读:
    SharePoint Workflow 定义文件示例
    XC#、Smart Client
    ASP.NET 2.0,无刷新页面新境界!
    ShadowFax Beta 1.0 is now AVAILABLE!
    SharePoint Data Provider
    《WalkThrough : SharePoint WebPart 入门指南 四》完成
    单元测试...
    Visual Studio 2005 Team System
    Return of Rich Client
    Implement Membership & Roles & Personalization in ASP.NET 1.1
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/6718405.html
Copyright © 2011-2022 走看看