• ASP.NET三层数据操作与GridView互动


    注册用户?管理用户? 练习一个面向对象的ASP.NET练习。以下博文是很基础很基础,适合刚接触ASP.NET参考。

    在数据库,创建一个表[Member],用来存储用户注册的信息。

    View Code
    -- =============================================
    -- Author:        Insus.NET
    -- Create date: 2013-04-30
    -- Description:    会员信息存储表
    -- =============================================
    CREATE TABLE [dbo].[Member]
    (
        [UserName] NVARCHAR(10) PRIMARY KEY NOT NULL,
        [Email] NVARCHAR(50) NULL,
        [IsUser] BIT DEFAULT(0) NOT NULL    
    )
    
    GO


    用户注册时,其实就是一个添加记录的动作,添加前,还要判断记录是否有已经存在,也就是用户名是否有已经被注册。写一个插入的存储过程:

    View Code
    -- =============================================
    -- Author:        Insus.NET
    -- Create date: 2013-04-30
    -- Description:    注册会员信息
    -- =============================================
    CREATE PROCEDURE [dbo].[usp_Member_Insert]
    (
        @UserName NVARCHAR(10),
        @Email NVARCHAR(50)
    )
    AS
    IF EXISTS (SELECT TOP 1 1 FROM [dbo].[Member] WHERE [UserName] = @UserName)
    BEGIN
        RAISERROR(N'用户名[%s]已经注册',16,1,@UserName)
        RETURN
    END
    INSERT INTO [dbo].[Member] ([UserName],[Email]) VALUES (@UserName,@Email)
    GO


    当然,你作为一个网站管理员,你得管理你的站点所有注册用户信息,下面是获取所有注册的用户信息:

    View Code
    -- =============================================
    -- Author:        Insus.NET
    -- Create date:               2013-04-30
    -- Description:    获取所有注册会员信息
    -- =============================================
    CREATE PROCEDURE [dbo].[usp_Member_GetAll]
    AS
    SELECT [UserName],[Email],[IsUser] FROM [dbo].[Member]
    
    GO


    你的站点会员日益增多,事务也越来越繁杂,你得开始对有资格的会员授权,下面是提升为管理员或是取消会员的权限。

    View Code
    -- =============================================
    -- Author:        Insus.NET
    -- Create date:               2013-04-30
    -- Description:    给会员授权
    -- =============================================
    CREATE PROCEDURE [dbo].[usp_Member_Update]
    (
        @UserName NVARCHAR(10),    
        @IsUser BIT
    )
    AS
    UPDATE [dbo].[Member] SET [IsUser] = @IsUser WHERE [UserName] = @UserName
    GO


    OK,我们将准备在ASP.NET写程序了,为了程序与数据库沟通好,下载一个组件:http://www.cnblogs.com/insus/archive/2010/01/23/1654653.html 解压之后,放入网站的BIN目录中。
    再下载一个js类库:http://www.cnblogs.com/insus/archive/2008/11/26/1341703.html 解压之后,同样放入网站的BIN目录中。

    配置Web.config,把连接数据库语句,写在web.config文件内。

    View Code
    <?xml version="1.0"?>
    <configuration>
      <connectionStrings>
        <add name="InsusConnectionString" connectionString="Server=127.0.0.1;Initial Catalog=Demo;User ID=sfr;Password=in2012jq;Packet Size=8192;Max Pool Size=1000;" providerName="System.Data.SqlClient"/>
      </connectionStrings>
      <system.web>
        <compilation debug="true" targetFramework="4.5"/>
        <httpRuntime targetFramework="4.5"/>
      </system.web>
    </configuration>


    接下来,我们在站点的App_Code目录下创建一个对象:

    Insus.NET.Member
    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Linq;
    using System.Web;
    
    /// <summary>
    /// Summary description for Member
    /// </summary>
    namespace Insus.NET
    {
        public class Member
        {
            private string _UserName;
            private string _Email;
            private bool _IsUser;
    
            public string UserName
            {
                get { return _UserName; }
                set { _UserName = value; }
            }
            public string Email
            {
                get { return _Email; }
                set { _Email = value; }
            }
            public bool IsUser
            {
                get { return _IsUser; }
                set { _IsUser = value; }
            }
    
            BusinessBase objBusinessBase = new BusinessBase();
            
            public Member()
            {
                //
                // TODO: Add constructor logic here
                //
            }
    
            public DataTable GetAll()
            {
                return objBusinessBase.GetDataToDataSet("usp_Member_GetAll").Tables[0];
            }
    
            public void Insert()
            {
                Parameter[] parameter = { 
                                            new Parameter ("@UserName",SqlDbType.NVarChar,-1,_UserName),
                                            new Parameter ("@Email",SqlDbType.NVarChar,-1,_Email)
                                        };
                objBusinessBase.ExecuteProcedure("usp_Member_Insert", parameter);
            }
    
            public void Update()
            { 
                 Parameter[] parameter = { 
                                            new Parameter ("@UserName",SqlDbType.NVarChar,-1,_UserName),
                                            new Parameter ("@IsUser",SqlDbType.Bit,1,_IsUser)
                                        };
                objBusinessBase.ExecuteProcedure("usp_Member_Update", parameter);
            }
        }
    }


    在网站创建一个网页,是让用户注册会员的地方:

    View Code
    用户名:<asp:TextBox ID="TextBoxUserName" runat="server"></asp:TextBox>
                <br />&nbsp;&nbsp;&nbsp;&nbsp;箱:<asp:TextBox ID="TextBoxEmail" runat="server" Width="300"></asp:TextBox>
                <br />
                <asp:Button ID="ButtonReg" runat="server" Text="注册" OnClick="ButtonReg_Click" />


    上面的注册铵钮,需要在.aspx.cs写Click事件:



    试运行看看执行效果:



    有了用户注册,作为网站管理员,得有一个页面,来管理这些注册的会员,也就是说,把数据库的记录显示于网页上。我们就用Gridview控件吧,在最后一列,我们还要摆放一个铵钮,让管理员对某一会员的权限管理。

    MgtMember.aspx
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="MgtMember.aspx.cs" Inherits="MgtMember" %>
    
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                <asp:GridView ID="GridViewMember" runat="server" AutoGenerateColumns="false" Width="400" DataKeyNames="UserName">
                    <Columns>
                        <asp:TemplateField>
                            <HeaderTemplate>
                                UserName
                            </HeaderTemplate>
                            <ItemTemplate>
                                <%# Eval("UserName") %>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField>
                            <HeaderTemplate>
                                Email
                            </HeaderTemplate>
                            <ItemTemplate>
                                <%# Eval("Email") %>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField>
                            <HeaderTemplate>
                                IsUser
                            </HeaderTemplate>
                            <ItemTemplate>
                                <asp:Label ID="LabelIsUser" runat="server" Text=""></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField>
                            <HeaderTemplate>
                            </HeaderTemplate>
                            <ItemTemplate>
                                <asp:Button ID="ButtonOpt" runat="server" Text="设置" />
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                </asp:GridView>
            </div>
        </form>
    </body>
    </html>


    GridView写好了,得为它绑定数据:


    现在我们看看网页运行的效果,当然真实环境中,这个网页需要设置权限,有权限才能访问得到。现在这些就略去了

    看到否,上图的IsUser列,以及最后一列的事件没有写。现在我们来完善它们,先来看看IsUser,是管理员的显示Y,反之显示为N,因此我们要给Gridview控件写一个OnRowDataBound事件。



    .aspx.cs:

    第29行代码,如果不是 DataRow,将不执行下面的代码。
    第31行代码,把e.Row.DataItem转换为DataRowView对象。
    第33行,判断GridView内是否有Label这个控件。
    第35和36行代码,找到Label并赋值。


    Ok,我们再把铵钮事件写好,就完成了。怎样写GridView自定义列的铵钮事件呢?再在GridView控件,添加一个OnRowCreated事件:



    在.cs代码页中,写OnRowCreated事件:

     程序写到此,我们来看看效果:

     
    现在, 我们还有一点点没有完成,就是当IsUser为Y时,右边的铵钮显示为取消,反之显示为"设置",怎样改呢,实现的地方,应该是在OnRowDataBound事件中去完成。下面高亮的代码,就是添加与修改的代码:



    如果你想需要此教程序的源程序(不包含数据库),可从下面链接下载得到:
    http://download.cnblogs.com/insus/ASPDOTNET/aspx_3_gridv.rar

  • 相关阅读:
    初学mysql数据库
    类与对象课堂总结
    CNN网络的基本介绍(三)
    CNN网络的基本介绍(二)
    CNN网络的基本介绍(一)
    Android studio界面布局的简单介绍
    Android studio初见及结构分析
    JDBC实现Mysqual的增删改查
    BufferedReader统计TXT文本
    JAVA的异常处理
  • 原文地址:https://www.cnblogs.com/insus/p/3052604.html
Copyright © 2020-2023  润新知