第16章基礎(chǔ)配置模塊_第1頁
第16章基礎(chǔ)配置模塊_第2頁
第16章基礎(chǔ)配置模塊_第3頁
第16章基礎(chǔ)配置模塊_第4頁
第16章基礎(chǔ)配置模塊_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

.@:第16章基礎(chǔ)配置模塊基礎(chǔ)配置模塊主要是設(shè)置一些字典表信息,包括區(qū)域、業(yè)務(wù)類型、部門、用戶狀態(tài)和用戶級別5個功能的設(shè)置?;A(chǔ)配置模塊是用戶使用本軟件的前提,其設(shè)計流程如圖16-1所示。SKIPIF1<0圖16-1基礎(chǔ)配置模塊的設(shè)計流程16.1區(qū)域設(shè)置在銷售方面,一般按照區(qū)域進行劃分,可以將整個市場分成幾個小部分,然后由不同的人負責(zé)不同的區(qū)域。根據(jù)本例需求,將區(qū)域分為5部分:華東、華北、東北、華南、西北,另外,系統(tǒng)必須允許用戶可以繼續(xù)添加。16.1.1添加區(qū)域首先為該模塊添加區(qū)域,包括區(qū)域的名稱和列表。1.添加區(qū)域名稱的顯示控件添加區(qū)域的操作步驟如下:(1)打開上一章創(chuàng)建的新項目SoftCRM。(2)在網(wǎng)站根目錄下新建一文件夾,命名為“controls”,用來存放用戶控件。(3)在controls文件夾下添加一個用戶控件,命名為“AreaSet”。(4)打開AreaSet.ascx文件,切換到設(shè)計視圖,添加控件如圖16-2所示。圖16-2添加區(qū)域功能的設(shè)計界面此處使用的網(wǎng)格是DataList,該控件用于顯示添加完畢后的區(qū)域,因為不需要再對數(shù)據(jù)做添加、刪除、修改、分頁等操作,而且只有一列數(shù)據(jù),所以使用比較簡單的、格式靈活的DataList控件,其添加數(shù)據(jù)源的方式與GridView控件相同,此處不再贅述。DataList默認生成的項目模板是:<ItemTemplate>AreaName:<asp:LabelID="AreaNameLabel"runat="server"Text='<%#Eval("AreaName")%>'></asp:Label></ItemTemplate>模板顯示的字段名稱是英文名,將其改為中文名“區(qū)域名稱”。設(shè)計界面中還使用了驗證控件,要求用戶必須輸入?yún)^(qū)域名稱,才可以執(zhí)行添加操作。注意:因為DataList設(shè)置的數(shù)據(jù)源是本實例第一個數(shù)據(jù)源,所以系統(tǒng)會提示是否生成數(shù)據(jù)庫連接字符串,默認名稱是“SoftCRMConnectionString”,此時要對照SqlHelper.cs文件中的連接字符串名稱。設(shè)計界面中,DataList和SqlDataSource控件的源代碼,請參考代碼清單16-1。代碼清單16-1設(shè)計界面部分代碼<asp:DataListID="DataList1"runat="server"DataSourceID="SqlDataSource1"RepeatColumns="2"BackColor="White"BorderColor="#CCCCCC"BorderStyle="None"BorderWidth="1px"CellPadding="3"GridLines="Both"><ItemTemplate>區(qū)域名稱:<asp:LabelID="AreaNameLabel"runat="server"Text='<%#Eval("AreaName")%>'></asp:Label><br/><br/></ItemTemplate><FooterStyleBackColor="White"ForeColor="#000066"/><SelectedItemStyleBackColor="#669999"Font-Bold="True"ForeColor="White"/><ItemStyleForeColor="#000066"/><HeaderStyleBackColor="#006699"Font-Bold="True"ForeColor="White"/></asp:DataList><asp:SqlDataSourceID="SqlDataSource1"runat="server"ConnectionString="<%$ConnectionStrings:SoftCRMConnectionString%>"SelectCommand="SELECT[AreaName]FROM[Area]"></asp:SqlDataSource>添加區(qū)域功能的界面設(shè)計已經(jīng)基本完成,其工作流程如圖16-3所示。SKIPIF1<0圖16-3添加區(qū)域功能流程圖2.代碼的設(shè)計界面和流程都設(shè)計好了,現(xiàn)在開始代碼設(shè)計。由于基礎(chǔ)配置模塊所用到的表都比較簡單,本節(jié)不使用實體類的方法來設(shè)計代碼,而是直接用操作方法類。(1)在App_Code文件夾下添加一個類,命名為BasicSet。(2)打開BasicSet.cs文件,為區(qū)域的添加功能書寫代碼,如清單16-2所示。代碼清單16-2基礎(chǔ)配置類中添加區(qū)域的代碼usingSystem;usingSystem.Data;usingSystem.Text;usingSystem.Configuration;usingSystem.Data.SqlClient;///<summary>///基礎(chǔ)配置類///</summary>publicclassBasicSet{//將參數(shù)名和T-SQL語句設(shè)置成常量,方便以后維護。privateconststringPARM_AREA_NAME="@areaname";privateconststringSQL_INSERT_AREA="INSERTINTOareaVALUES(@areaname)";publicBasicSet(){}///<summary>///添加區(qū)域方法///</summary>///<paramname="areaname">區(qū)域名稱</param>///<returns>是否成功</returns>publicboolAddArea(stringareaname){//初始化輸入?yún)?shù)并賦值SqlParameterparm=newSqlParameter(PARM_AREA_NAME,SqlDbType.NVarChar,20);parm.Value=areaname;//將參數(shù)添加到SQL命令中SqlCommandcmd=newSqlCommand();cmd.Parameters.Add(parm);//初始化字符串連接StringBuilderstrSQL=newStringBuilder();//初始化數(shù)據(jù)庫連接using(SqlConnectionconn=newSqlConnection(SqlHelper.ConnectionStringLocalTransaction)){//添加連接語句strSQL.Append(SQL_INSERT_AREA);//打開數(shù)據(jù)庫連接conn.Open();//設(shè)置Sqlcommand命令的屬性cmd.Connection=conn;cmd.CommandType=CommandType.Text;cmd.CommandText=strSQL.ToString();//執(zhí)行添加的SqlCommand命令intval=cmd.ExecuteNonQuery();//清空SqlCommand命令中的參數(shù)cmd.Parameters.Clear();//判斷是否添加成功,注意返回的是添加是否成功,不是影響的行數(shù)if(val>0)returntrue;elsereturnfalse;}}}方法設(shè)計完成后,打開AreaSet.ascx用戶控件,切換到設(shè)計視圖。雙擊“添加”按鈕,系統(tǒng)切換到代碼窗口,在添加按鈕的Click事件中書寫代碼,如清單16-3所示。代碼清單16-3界面中“添加”按鈕的Click事件代碼//判斷頁面驗證是否成功if(Page.IsValid){//初始化基礎(chǔ)配置類BasicSetmybasic=newBasicSet();//調(diào)用添加區(qū)域的方法,方法參數(shù)是區(qū)域名稱。boolresult=mybasic.AddArea(TextBox1.Text);//判斷是否執(zhí)行成功if(result){//執(zhí)行成功,清空區(qū)域名稱,提示信息。TextBox1.Text="";Label3.Text="添加成功。";//并重新綁定數(shù)據(jù)源,更新顯示列表。DataList1.DataBind();}}3.測試控件現(xiàn)在測試剛創(chuàng)建完的“添加區(qū)域”用戶控件。(1)在網(wǎng)站根目錄下添加一個Web窗體,命名為“AreaAddPage”。說明:創(chuàng)建時應(yīng)用母版頁。(2)打開AreaAddPage.aspx文件,將AreaSet.ascx文件拖放到Content控件中。(3)按“Ctrl+S”保存文件,并將此頁設(shè)置為起始頁。(4)按F5編譯并運行此頁。(5)添加一個區(qū)域,看能否在DataList中正常顯示。16.1.2設(shè)計“選擇區(qū)域”用戶控件在很多模塊中有選擇區(qū)域這個功能,基于代碼重用性原則,本例把區(qū)域下拉框做為一個用戶控件,并為其設(shè)置數(shù)據(jù)源。(1)在controls目錄下添加一個用戶控件,命名為“AreaUC”。(2)打開AreaUC.cs文件,切換到設(shè)計視圖。(3)拖放一個DropDownList控件到界面。(4)在任務(wù)菜單中單擊“選擇數(shù)據(jù)源”,出現(xiàn)選擇數(shù)據(jù)源的向?qū)?。新建一個數(shù)據(jù)源,并只選擇AreaName一個字段。說明:此步驟可參考第9章中關(guān)于數(shù)據(jù)源如何選擇的介紹。(5)在創(chuàng)建數(shù)據(jù)源的步驟中,測試完查詢后單擊“完成”按鈕,出現(xiàn)DropDownList設(shè)置項目的對話框,如圖16-4所示。圖16-4設(shè)置DropDownList項目(6)本例只有一個屬性,所有選擇都采用默認值,單擊“確定”按鈕完成設(shè)置。(7)按“Ctrl+S”保存此控件,控件的界面代碼參考清單16-4所示。代碼清單16-4“選擇區(qū)域”用戶控件HTML代碼<%@ControlLanguage="C#"AutoEventWireup="true"CodeFile="AreaUC.ascx.cs"Inherits="controls_AreaUC"%><asp:DropDownListID="DropDownList1"runat="server"DataSourceID="SqlDataSource1"DataTextField="AreaName"DataValueField="AreaName"></asp:DropDownList><asp:SqlDataSourceID="SqlDataSource1"runat="server"ConnectionString="<%$ConnectionStrings:SoftCRMConnectionString%>"SelectCommand="SELECT[AreaName]FROM[Area]"></asp:SqlDataSource>設(shè)計完控件的界面后,為了讓用戶從該控件中獲取值,還必須添加此控件的一個公共屬性SelectValue,表示獲取下拉框選擇的值。按F7進入代碼界面,添加代碼清單16-5中的代碼。代碼清單16-5“選擇區(qū)域”用戶控件的屬性///<summary>///設(shè)計用戶控件的選擇值///</summary>publicstringSelectValue{//返回下拉框的選擇值get{returnDropDownList1.SelectedValue.ToString();}}注意屬性的可見性為public,表示任何使用此控件的界面,都可以獲取到這個屬性。這樣一個區(qū)域選擇控件就設(shè)計完成了,在以后的模塊中,凡使用區(qū)域字段的功能,都可以直接拖放這個控件到界面上。16.1.3添加區(qū)域中的城市銷售部根據(jù)區(qū)域中業(yè)務(wù)的分布情況,添加各個區(qū)域中的主要城市。因為系統(tǒng)無法驗證所填的城市是否屬于這個區(qū)域,所以添加時要注意準確性。1.添加顯示城市的控件首先要添加用于顯示城市的控件,其步驟如下:(1)在controls目錄下添加一個用戶控件,命名為“AddCity”。(2)打開AddCity.cs文件,切換到設(shè)計視圖。(3)添加的控件如圖16-5所示。網(wǎng)格使用GridView控件,區(qū)域名稱使用的是上一節(jié)創(chuàng)建的AreaUC用戶控件,城市名稱文本框使用了RequiredFieldValidator驗證控件,表示必須填寫該項。圖16-5添加城市功能設(shè)計界面(4)設(shè)計GridView控件的數(shù)據(jù)源,設(shè)計結(jié)果參考代碼清單16-6中SqlDataSource中的屬性,這里要注意SelectCommand命令。提示:設(shè)計步驟參考第9章的介紹。(5)編輯GridView控件的列屬性,編輯結(jié)果參考清單16-6中GridView1控件的設(shè)置。代碼清單16-6“添加城市”用戶控件中列和數(shù)據(jù)源的屬性<asp:GridViewID="GridView1"runat="server"AutoGenerateColumns="False"DataSourceID="SqlDataSource1"Width="305px"><Columns><asp:BoundFieldDataField="AreaName"HeaderText="區(qū)域名稱"SortExpression="AreaName"/><asp:BoundFieldDataField="CityName"HeaderText="城市名稱"SortExpression="CityName"/></Columns></asp:GridView><asp:SqlDataSourceID="SqlDataSource1"runat="server"ConnectionString="<%$ConnectionStrings:SoftCRMConnectionString%>"SelectCommand="SELECTArea.AreaName,City.CityNameFROMAreaINNERJOINCity</asp:SqlDataSource>界面設(shè)計完畢,根據(jù)需求列出此功能的流程如圖16-6所示。SKIPIF1<0圖16-6添加城市功能的流程圖2.設(shè)計代碼下面根據(jù)流程圖設(shè)計代碼。在基礎(chǔ)配置類BasicSet中添加兩個方法:一個用于添加城市,一個用于獲取區(qū)域ID,其代碼如清單16-7所示。代碼清單16-7基礎(chǔ)配置類中添加城市的兩個方法privateconststringPARM_AREA_ID="@areaid";privateconststringPARM_CITY_NAME="@cityname";privateconststringSQL_INSERT_CITY="INSERTINTOcityVALUES(@areaid,@cityname)";privateconststringSQL_SELECT_AREAID="SELECTareaidFROMareaWHEREareaname=@areaname";///<summary>///為區(qū)域添加城市的方法///</summary>///<paramname="areaname">區(qū)域名稱</param>///<paramname="cityname">城市名稱</param>///<returns>是否添加成功</returns>publicboolAddCity(stringareaname,stringcityname){//因為城市表中存放的是區(qū)域的ID,所以要先獲取區(qū)域ID。intareaid=GetAreaID(areaname);//初始化輸入?yún)?shù)并賦值SqlParameter[]parm=newSqlParameter[]{newSqlParameter(PARM_AREA_ID,SqlDbType.Int),newSqlParameter(PARM_CITY_NAME,SqlDbType.NVarChar,20)};parm[0].Value=areaid;parm[1].Value=cityname;//將參數(shù)添加到SQL命令中SqlCommandcmd=newSqlCommand();//遍歷所有參數(shù),并將參數(shù)添加到SqlCommand命令中foreach(SqlParameterparm1inparm)cmd.Parameters.Add(parm1);//初始化字符串連接StringBuilderstrSQL=newStringBuilder();//初始化數(shù)據(jù)庫連接using(SqlConnectionconn=newSqlConnection(SqlHelper.ConnectionStringLocalTransaction)){//添加連接語句strSQL.Append(SQL_INSERT_CITY);//打開數(shù)據(jù)庫連接conn.Open();//設(shè)置Sqlcommand命令的屬性cmd.Connection=conn;cmd.CommandType=CommandType.Text;cmd.CommandText=strSQL.ToString();//執(zhí)行添加的SqlCommand命令intval=cmd.ExecuteNonQuery();//清空SqlCommand命令中的參數(shù)cmd.Parameters.Clear();//判斷是否添加成功,注意返回的是添加是否成功,不是影響的行數(shù)if(val>0)returntrue;elsereturnfalse;}}///<summary>///根據(jù)區(qū)域名稱獲取ID的內(nèi)部方法///</summary>///<paramname="areaname">區(qū)域名稱</param>///<returns>返回區(qū)域ID</returns>privateintGetAreaID(stringareaname){//初始化輸入?yún)?shù)并賦值SqlParameterparm=newSqlParameter(PARM_AREA_NAME,SqlDbType.NVarChar,20);parm.Value=areaname;//調(diào)用SqlHelper訪問組件的方法返回第一行第一列的值stringtmpstr=SqlHelper.ExecuteScalar(SqlHelper.ConnectionStringLocalTransaction,CommandType.Text,SQL_SELECT_AREAID,parm).ToString();//將返回值進行類型轉(zhuǎn)換intareaid=int.Parse(tmpstr);//返回區(qū)域ID。returnareaid;}編輯完成類中的代碼后,再設(shè)計界面中使用的代碼:(1)打開AddCity.ascx文件,切換到設(shè)計視圖。(2)雙擊“添加”按鈕,光標將切換到按鈕的Click事件代碼處。(3)在事件中填寫代碼,如清單16-8所示。代碼清單16-8添加城市界面中添加按鈕的Click事件//判斷頁面驗證是否成功if(Page.IsValid){//初始化基礎(chǔ)配置類BasicSetmybasic=newBasicSet();//執(zhí)行類中的添加城市方法boolresult=mybasic.AddCity(AreaUC1.SelectValue,TextBox1.Text);//判斷是否添加成功if(result){//清空文本框TextBox1.Text="";//提示成功信息Label4.Text="添加成功";//重新綁定數(shù)據(jù)源GridView1.DataBind();}}(4)按“Ctrl+S”保存文件。4.測試控件測試創(chuàng)建完畢的“添加城市”用戶控件:(1)在網(wǎng)站根目錄下添加一個Web窗體,命名為AddCityPage,并應(yīng)用母版頁。(2)打開AddCityPage.aspx文件,切換到設(shè)計視圖。(3)拖放AddCity.ascx文件到Content控件內(nèi)。(4)按“Ctrl+S”保存文件,并將此文件設(shè)為起始頁。(5)按F5運行頁面。選擇一個區(qū)域,填寫城市名,看添加是否能成功執(zhí)行,同時看數(shù)據(jù)是否能正常顯示。16.1.4用主細表方式查看區(qū)域和城市上一小節(jié)中使用了GridView顯示所有城市名稱以及城市的所屬區(qū)域,但當某一區(qū)域中城市特別多的時候,此種顯示方式會比較雜亂,讓用戶無法對區(qū)域和城市內(nèi)容一目了然。本節(jié)學(xué)習(xí)使用主細表的方式,當用戶在主表中選擇區(qū)域后,從表中立刻顯示所選區(qū)域中包含的城市。(1)在controls文件夾下添加一個用戶控件,并命名為“ViewAreaCity”。(2)打開ViewAreaCity.ascx文件,切換到設(shè)計視圖。(3)分別拖放一個GridView控件和一個DataList控件到設(shè)計界面。(4)設(shè)置GridView控件的數(shù)據(jù)源。在出現(xiàn)“配置Select語句窗口”的時候,選擇“Area”表的所有字段。因為在主細表的設(shè)置中,必須將主表的ID字段設(shè)置為DataKeyNames,而顯示的只是“AreaName”字段。(5)設(shè)置DataList控件的數(shù)據(jù)源。因為DataList顯示是有條件的,所以在創(chuàng)建數(shù)據(jù)源的步驟中,出現(xiàn)“配置Select語句窗口”時,單擊“Where”按鈕,設(shè)置的參數(shù)值來自GridView控件。提示:具體設(shè)置方法可參考第9章的介紹。(6)兩個控件的數(shù)據(jù)源都創(chuàng)建完畢,按“Ctrl+S”保存。具體控件的設(shè)置參考代碼清單16-9所示。代碼清單16-9主細表界面源代碼<%@ControlLanguage="C#"AutoEventWireup="true"CodeFile="ViewAreaCity.ascx.cs"Inherits="controls_ViewAreaCity"%><asp:GridViewID="GridView1"runat="server"AllowPaging="True"AutoGenerateColumns="False"DataKeyNames="AreaID"DataSourceID="SqlDataSource1"Width="407px"><Columns><asp:CommandFieldShowSelectButton="True"/><asp:BoundFieldDataField="AreaName"HeaderText="區(qū)域名稱"SortExpression="AreaName"/></Columns></asp:GridView> <asp:SqlDataSourceID="SqlDataSource1"runat="server"ConnectionString="<%$ConnectionStrings:SoftCRMConnectionString%>"SelectCommand="SELECT[AreaID],[AreaName]FROM[Area]"></asp:SqlDataSource><asp:DataListID="DataList1"runat="server"DataSourceID="SqlDataSource2"RepeatColumns="2"BackColor="White"BorderColor="#CCCCCC"BorderStyle="None"BorderWidth="1px"CellPadding="3"GridLines="Both"Width="406px"><ItemTemplate>城市名稱:<asp:LabelID="CityNameLabel"runat="server"Text='<%#Eval("CityName")%>'></asp:Label><br/><br/></ItemTemplate><FooterStyleBackColor="White"ForeColor="#000066"/><SelectedItemStyleBackColor="#669999"Font-Bold="True"ForeColor="White"/><ItemStyleForeColor="#000066"/><HeaderStyleBackColor="#006699"Font-Bold="True"ForeColor="White"/></asp:DataList><asp:SqlDataSourceID="SqlDataSource2"runat="server"ConnectionString="<%$ConnectionStrings:SoftCRMConnectionString%>"SelectCommand="SELECT[CityName]FROM[City]WHERE([AreaID]=@AreaID)"><SelectParameters><asp:ControlParameterControlID="GridView1"DefaultValue="0"Name="AreaID"PropertyName="SelectedValue"Type="Int32"/></SelectParameters></asp:SqlDataSource>現(xiàn)在測試主細表控件:(1)在網(wǎng)站根目錄下添加一個Web窗體,命名為“ViewAreaCityPage”,并應(yīng)用母版頁。(2)打開ViewAreaCityPage.cs文件,切換到設(shè)計視圖。(3)拖放ViewAreaCity.ascx文件到Content控件內(nèi)。按“Ctrl+S”保存。(4)將此頁設(shè)置為起始頁,按F5編譯并運行。在主表中選擇區(qū)域,看從表中是否能正常顯示區(qū)域中所有的城市。運行結(jié)果如圖16-7所示。圖16-7主細表運行界面16.2客戶等級設(shè)置客戶等級、客戶狀態(tài)和業(yè)務(wù)類型3個設(shè)置的基本步驟相同,而且表結(jié)構(gòu)也相同,所以本節(jié)重點介紹客戶等級。在一個界面中,既實現(xiàn)客戶等級的添加功能,又能瀏覽所有的等級。16.2.1客戶等級的設(shè)計客戶等級功能的實現(xiàn)流程如圖16-8所示。SKIPIF1<0圖16-8添加客戶等級功能流程圖下面根據(jù)流程圖添加相應(yīng)的控件,其步驟如下:(1)在controls目錄下添加一個用戶控件,命名為“UserGrade”。(2)打開UserGrade.ascx文件,切換到設(shè)計視圖。(3)添加控件如圖16-9所示。這里使用了驗證控件RequiredFieldValidator1,用于控制用戶必須填寫等級名稱。圖16-9添加客戶等級功能設(shè)計界面(4)DataList控件和數(shù)據(jù)源屬性如清單16-10所示。代碼清單16-10添加客戶等級中DataList控件和數(shù)據(jù)源屬性<asp:DataListID="DataList1"runat="server"BackColor="White"BorderColor="#CCCCCC"BorderStyle="None"BorderWidth="1px"CellPadding="3"DataSourceID="SqlDataSource1"GridLines="Both"RepeatColumns="2"Width="419px"><FooterStyleBackColor="White"ForeColor="#000066"/><SelectedItemStyleBackColor="#669999"Font-Bold="True"ForeColor="White"/><ItemTemplate>等級名稱:<asp:LabelID="GradeNameLabel"runat="server"Text='<%#Eval("GradeName")%>'></asp:Label><br/><br/></ItemTemplate><ItemStyleForeColor="#000066"/><HeaderStyleBackColor="#006699"Font-Bold="True"ForeColor="White"/></asp:DataList><asp:SqlDataSourceID="SqlDataSource1"runat="server"ConnectionString="<%$ConnectionStrings:SoftCRMConnectionString%>"SelectCommand="SELECT[GradeName]FROM[UserGrade]"></asp:SqlDataSource>16.2.2客戶等級的代碼實現(xiàn)設(shè)計完界面后,添加功能需要的代碼,步驟如下:(1)打開基礎(chǔ)配置類BasicSet.cs,添加方法AddGrade,代碼如清單16-11所示。代碼清單16-11基礎(chǔ)配置類中添加等級的方法privateconststringPARM_GRADE_NAME="@gradename";privateconststringSQL_INSERT_GRADE="INSERTINTOusergradeVALUES(@gradename)";///<summary>///添加客戶等級方法///</summary>///<paramname="areaname">等級名稱</param>///<returns>是否成功</returns>publicboolAddGrade(stringgradename){//初始化輸入?yún)?shù)并賦值SqlParameterparm=newSqlParameter(PARM_GRADE_NAME,SqlDbType.NVarChar,20);parm.Value=gradename;//將參數(shù)添加到SQL命令中SqlCommandcmd=newSqlCommand();cmd.Parameters.Add(parm);//初始化字符串連接StringBuilderstrSQL=newStringBuilder();//初始化數(shù)據(jù)庫連接using(SqlConnectionconn=newSqlConnection(SqlHelper.ConnectionStringLocalTransaction)){//添加連接語句strSQL.Append(SQL_INSERT_GRADE);//打開數(shù)據(jù)庫連接conn.Open();//設(shè)置Sqlcommand命令的屬性cmd.Connection=conn;cmd.CommandType=CommandType.Text;cmd.CommandText=strSQL.ToString();//執(zhí)行添加的SqlCommand命令intval=cmd.ExecuteNonQuery();//清空SqlCommand命令中的參數(shù)cmd.Parameters.Clear();//判斷是否添加成功,注意返回的是添加是否成功,不是影響的行數(shù)if(val>0)returntrue;elsereturnfalse;}}(2)按“Ctrl+S”保存文件,打開UserGrade.ascx文件,切換到設(shè)計視圖。(3)雙擊“添加”按鈕,系統(tǒng)切換到代碼視圖,在Click事件中編寫代碼如清單16-12所示。代碼清單16-12添加等級的事件代碼//判斷頁面驗證是否成功if(Page.IsValid){//初始化基礎(chǔ)配置類BasicSetmybasic=newBasicSet();//執(zhí)行添加等級的方法boolresult=mybasic.AddGrade(TextBox1.Text);//判斷執(zhí)行是否成功if(result){//提示信息并重新綁定數(shù)據(jù)TextBox1.Text="";Label3.Text="添加成功";DataList1.DataBind();}}(4)按“Ctrl+S”保存文件。在網(wǎng)站根目錄下添加一個UserGradePage頁面,測試客戶等級這個用戶控件。輸入客戶等級名稱,單擊“添加”按鈕,查看添加是否成功。如果成功,繼續(xù)查看DataList控件顯示的內(nèi)容是否能夠及時更新。16.3客戶狀態(tài)設(shè)置因為客戶狀態(tài)設(shè)置同客戶等級一樣,所以本節(jié)將不再細述功能的生成步驟,只給出客戶狀態(tài)的界面設(shè)計。兩者主要區(qū)別是所存取的表名稱不同??蛻魻顟B(tài)的設(shè)計界面如圖16-10所示??蛻魻顟B(tài)的所有代碼,請參考隨書光盤。圖16-10客戶狀態(tài)功能設(shè)計界面16.4客戶業(yè)務(wù)類型設(shè)置因為客戶業(yè)務(wù)類型設(shè)置同客戶等級一樣,所以本節(jié)同樣只給出界面,代碼請參考隨書光盤??蛻魳I(yè)務(wù)類型的設(shè)計界面如圖16-11所示。圖16-11客戶業(yè)務(wù)類型功能設(shè)計界面16.5部門設(shè)置部門設(shè)置的步驟同客戶等級也一樣,但考慮到業(yè)務(wù)類型不同,所以只簡要介紹部門的設(shè)計。部門設(shè)置的設(shè)計界面如圖16-12所示。圖16-12部門設(shè)置功能設(shè)計界面部門設(shè)置界面中數(shù)據(jù)源和DataList屬性源代碼,如清單16-13所示。代碼清單16-13部門設(shè)置中數(shù)據(jù)源和DataList屬性源代碼<asp:DataListID="DataList1"runat="server"BackColor="White"BorderColor="#CCCCCC"BorderStyle="None"BorderWidth="1px"CellPadding="3"DataSourceID="SqlDataSource1"GridLines="Both"RepeatColumns="2"Width="419px"><FooterStyleBackColor="White"ForeColor="#000066"/><SelectedItemStyleBackColor="#669999"Font-Bold="True"ForeColor="White"/><ItemTemplate>部門名稱:<asp:LabelID="DepartNameLabel"runat="server"Text='<%#Eval("DepartName")%>'></asp:Label><br/><br/></ItemTemplate><ItemStyleForeColor="#000066"/><HeaderStyleBackColor="#006699"Font-Bold="True"ForeColor="White"/></asp:DataList><asp:SqlDataSourceID="SqlDataSource1"runat="server"ConnectionString="<%$ConnectionStrings:SoftCRMConnectionString%>"SelectCommand="SELECT[DepartName]FROM[Department]"></asp:SqlDataSource>基礎(chǔ)配置類中,添加部門方法的代碼,如清單16-14所示。代碼清單16-14添加部門方法的代碼privateconststringPARM_DEPART_NAME="@departname";privateconststringSQL_INSERT_DEPART="INSERTINTOdepartmentVALUES(@departname)";///<summary>///添加部門方法///</summary>///<paramname="areaname">類型名稱</param>///<returns>是否成功</returns>publicboolAddDepart(stringdepartname){//初始化輸入?yún)?shù)并賦值SqlParameterparm=newSqlParameter(PARM_DEPART_NAME,SqlDbType.NVarChar,20);parm.Value=departname;//將參數(shù)添加到SQL命令中SqlCommandcmd=newSqlCommand();cmd.Parameters.Add(parm);//初始化字符串連接StringBuilderstrSQL=newStringBuilder();//初始化數(shù)據(jù)庫連接using(SqlConnectionconn=newSqlConnection(SqlHelper.ConnectionStringLocalTransaction)){//添加連接語句strSQL.Append(SQL_INSERT_DEPART);//打開數(shù)據(jù)庫連接conn.Open();//設(shè)置Sqlcommand命令的屬性cmd.Connection=conn;cmd.CommandType=CommandType.Text;cmd.CommandText=strSQL.ToString();//執(zhí)行添加的SqlCommand命令intval=cmd.ExecuteNonQuery();//清空SqlCommand命令中的參數(shù)cmd.Parameters.Clear();//判斷是否添加成功,注意返回的是添加是否成功,不是影響的行數(shù)if(val>0)returntrue;elsereturnfalse;}}設(shè)計界面中,“添加”按鈕的Click事件代碼,如清單16-15所示。代碼清單16-15部門設(shè)置中添加事件代碼//判斷頁面驗證是否成功if(Page.IsValid){//初始化基礎(chǔ)配置類BasicSetmybasic=newBasicSet();//執(zhí)行添加部門的方法boolresult=mybasic.AddDepart(TextBox1.Text);//判斷執(zhí)行是否成功if(result){//提示信息并重新綁定數(shù)據(jù)TextBox1.Text="";Label3.Text="添加成功";DataList1.DataBind();}}16.6基礎(chǔ)配置模塊集成測試本例在MasterPage.master母版頁中,使用了通過超級鏈接展開功能樹節(jié)點的方法,也使用了樹型地圖來展示各個功能模塊。首先要完善XML地圖文件中,基礎(chǔ)配置模塊包含的功能,以及各功能對應(yīng)的界面。(1)打開SiteMap.xml文件,修改“基礎(chǔ)配置模塊”節(jié)點內(nèi)的元素,內(nèi)容如清單16-16所示。代碼清單16-16SiteMap.xml中基礎(chǔ)配置模塊節(jié)點<siteMapNodeurl=""title="基礎(chǔ)配置"description=""><siteMapNodeurl="AreaAddPage.aspx"title="添加區(qū)域"description=""/><siteMapNodeurl="AddCity.aspx"title="添加城市"description=""/><siteMapNodeurl="ViewAreaCityPage.aspx"title="查看區(qū)域城市"description=""/><siteMapNodeurl="DepartPage.aspx"title="部門設(shè)置"description=""/><siteMapNodeurl="UserStatePage.aspx"title="客戶狀態(tài)設(shè)置"description=""/><siteMapNodeurl="UserGradePage.aspx"title="客戶等級設(shè)置"description=""/><siteMapNodeurl="UserTypePage.aspx"title="客戶業(yè)務(wù)類型設(shè)置"description=""/></siteMapNode>(2)按F5編譯并運行界面,單擊基礎(chǔ)配置模塊內(nèi)的功能,查看打開的網(wǎng)頁是否正確。此時只是完善了樹的URL,而母版頁中的LinkButton按紐還沒有發(fā)揮作用。本實例將使用XML文件中的某一節(jié)點集為TreeView提供數(shù)據(jù)源。(1)打開MasterPage.master文件,切換到設(shè)計視圖。(2)單擊TreeView控件的任務(wù)列表按鈕,在彈出的任務(wù)列表中,選擇“配置數(shù)據(jù)源”,打開配置窗口,如圖16-13所示。圖16-13TreeView配置數(shù)據(jù)源窗口(3)在配置窗口中,有一個項是XPath表達式,其用于篩選XML文件中的數(shù)據(jù),并返回XML文件的子集。表達式輸入“siteMapNode/siteMapNode[@title='基礎(chǔ)配置']”。表示要篩選的是title為“基礎(chǔ)配置”的子集。具體XPath的用法在下一節(jié)中介紹。(4)單擊“確定”按鈕,返回到設(shè)計視圖。此時TreeView控件中只顯示基礎(chǔ)配置模塊的節(jié)點。那如何實現(xiàn)選擇不同的模塊,顯示不同的子集呢?通過LinkButton的Click事件實現(xiàn)。前提要把數(shù)據(jù)源中的XPath去掉。(5)分別雙擊4個LinkButton按鈕,在Click事件中填寫代碼,如清單16-17所示。代碼清單16-17母版頁中各模塊按鈕的事件代碼//基礎(chǔ)配置按鈕事件//改變XML文件的篩選路徑XmlDataSource1.XPath="siteMapNode/siteMapNode[@title='基礎(chǔ)配置']";//將路徑保存在會話中Session[“xpath”]=XmlDataSource1.XPath;//客戶資料管理按鈕事件XmlDataSource1.XPath="siteMapNode/siteMapNode[@title='客戶管理']";//將路徑保存在會話中Session[“xpath”]=XmlDataSource1.XPath;//員工管理按鈕事件XmlDataSource1.XPath="siteMapNode/siteMapNode[@title='員工管理']";//將路徑保存在會話中Session[“xpath”]=XmlDataSource1.XPath;//客戶服務(wù)管理按鈕事件//改變XML文件的篩選路徑XmlDataSource1.XPath="siteMapNode/siteMapNode[@title='客戶服務(wù)管理']";//將路徑保存在會話中Session[“xpath”]=XmlDataSource1.XPath;(6)因為頁面刷新后,XmlDataSource1的XPath屬性就被清空,為了保留其設(shè)置,還需要在頁面的Page_Load事件中添加判斷。如清單16-18所示。代碼清單16-18母版頁中各模塊按鈕的事件代碼protectedvoidPage_Load(objectsender,EventArgse){//判斷是否存在XPath路徑值if(Session["xpath"]!=null)//如果存在則重新為XmlDataSource1設(shè)置篩選路徑XmlDataSource1.XPath=Session["xpath"].ToString();}(7)按“Ctrl+S”保存母版文件。按F5運行程序,單擊各個功能模塊按鈕,查看是否能準確顯示,XML文件中有關(guān)各模塊的子集。注意,由于很多功能頁面中使用了驗證控件,而運行中切換功能按鈕時,并不需要驗證,所以將4個LinkButton按鈕的CausesValidation屬性,設(shè)置為false,這樣再單擊功能按鈕時,就不會受到頁面驗證的控制。16.7代碼設(shè)計技術(shù)要點本章既使用了新的控件,也使用了某些控件的新方法。下面將詳細介紹這些控件和方法的應(yīng)用。16.7.1DataList控件以自定義的格式顯示數(shù)據(jù)庫行的信息。顯示數(shù)據(jù)的格式在創(chuàng)建的模板中定義??梢詾轫?、交替項、選定項和編輯項創(chuàng)建模板。標頭、腳注和分隔符模板也用于自定義DataList的整體外觀。DataList控件可以控制數(shù)據(jù)顯示的列數(shù),可以控制顯示的方向是水平還是垂直,這為記錄的顯示方式提供了很大的靈活性。下面來具體了解該控件的組成。DataList控件的主要屬性:RepeatColumns:設(shè)置DataList控件中顯示的列數(shù)。RepeatDirection:設(shè)置DataList顯示數(shù)據(jù)的方向是水平還是垂直。DataSourceID:為DataList提供數(shù)據(jù)源的控件的ID。DataList控件支持的模板及模板屬性,可參考表16-1。表16-1DataList控件支持的模板ItemTemplate為數(shù)據(jù)源中的每一行呈現(xiàn)一次,是主要內(nèi)容模板。<AlternatingItemTemplate>每兩行呈現(xiàn)一次,用于交替項的呈現(xiàn)。SelectedItemTemplate當用戶選擇某一項時,要呈現(xiàn)的內(nèi)容EditItemTemplate某項處于編輯時的布局。HeaderTemplate列表的開始處要呈現(xiàn)的內(nèi)容。FooterTemplate列表的結(jié)束處要呈現(xiàn)的內(nèi)容。SeparatorTemplate包含在每項之間的元素。16.7.2下面介紹DataList控件的幾種使用方法:將單個控件的屬性綁定到數(shù)據(jù)。以下示例就是將TextBox控件的值,綁定到DataList控件上。注意Eval方法的使用,參數(shù)是控件的ID。<ItemTemplate>城市名稱:<asp:TextBoxID="txtcity"runat="server"Text='<%#Eval("txtcity")%>'></asp:TextBox><br/></ItemTemplate>在代碼中指定DataList的布局。//將數(shù)據(jù)分3列顯示DataList1.RepeatColumns=3;//數(shù)據(jù)水平顯示DataList1.RepeatDirection=RepeatDirection.Horizontal;運行時自定義DataList項目的背景色。首先判斷要創(chuàng)建的項目類型,然后根據(jù)類型,賦予不同的背景色。protectedvoidDataList1_ItemCreated(objectsender,EventArgse){//要判斷項目的類型switch(e.Item.ItemType){//普通項目caseListItemType.Item:e.Item.BackColor=System.Drawing.Color.LightGoldenrodYellow;break;//交替項目caseListItemType.AlternatingItem:e.Item.BackColor=System.Drawing.Color.DarkGoldenrod;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論