为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
JavaScript

注册用户?管理用户? 练习一个面向对象的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))ASIF EXISTS (SELECT TOP 1 1 FROM [dbo].[Member] WHERE [UserName] = @UserName)BEGIN    RAISERROR(N'用户名[%s]已经注册',16,1,@UserName)    RETURNENDINSERT 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]ASSELECT [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)ASUPDATE [dbo].[Member] SET [IsUser] = @IsUser WHERE [UserName] = @UserNameGO


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

 

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消