注冊用戶?管理用戶? 練習一個面向對象的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 /> 郵 箱:<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>
現在我們看看網頁運行的效果,當然真實環境中,這個網頁需要設置權限,有權限才能訪問得到。現在這些就略去了
看到否,上圖的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事件:
現在, 我們還有一點點沒有完成,就是當IsUser為Y時,右邊的銨鈕顯示為取消,反之顯示為"設置",怎樣改呢,實現的地方,應該是在OnRowDataBound事件中去完成。下面高亮的代碼,就是添加與修改的代碼:
如果你想需要此教程序的源程序(不包含數據庫),可從下面鏈接下載得到:
http://download.cnblogs.com/insus/ASPDOTNET/aspx_3_gridv.rar




