版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第17章客戶管理模塊客戶管理模塊是整個(gè)客戶關(guān)系管理系統(tǒng)中的關(guān)鍵部分,要求能詳細(xì)的描述客戶的信息,并能通過(guò)各種方式,方便的查詢(xún)客戶。整個(gè)客戶管理模塊的流程如圖17-1所示。圖17-1客戶管理模塊的流程圖17.1客戶資料的管理客戶資料的管理主要實(shí)現(xiàn)對(duì)客戶資料的添加、修改和查詢(xún)等功能。17.1.1客戶資料中常用的用戶控件客戶資料包括區(qū)域、行業(yè)類(lèi)型、客戶狀態(tài)、客戶等級(jí)4個(gè)屬性,這些屬性會(huì)出現(xiàn)在添加、修改和查詢(xún)等很多功能中,而且這些屬性的值都來(lái)源于數(shù)據(jù)庫(kù),本著軟件重用性原則,將其設(shè)計(jì)成用戶控件,實(shí)現(xiàn)一次設(shè)計(jì),多次使用。前面已經(jīng)設(shè)計(jì)好了“選擇區(qū)域”用戶控件,本節(jié)將采用相同的方法設(shè)計(jì)其他3個(gè)屬性。行業(yè)類(lèi)型不允許普通用戶輸入,只能通過(guò)下拉框選擇,設(shè)計(jì)步驟如下:打開(kāi)本例的網(wǎng)站項(xiàng)目SoftCRMo在controls目錄下,添加一個(gè)用戶控件,命名為UserTypeUC。在設(shè)計(jì)界面中,添加一個(gè)DropDownList控件。(4)為DropDownList控件新建數(shù)據(jù)源。數(shù)據(jù)源類(lèi)型為“數(shù)據(jù)庫(kù)”,數(shù)據(jù)連接選擇“SoftERMConnnectionString”,表選擇的是UserType,字段只選擇一個(gè):TypeName。按F7切換到代碼視圖,為該控件添加一個(gè)公共屬性值,用來(lái)表示選擇的值。具體代碼可參考隨書(shū)光盤(pán)。按"Ctrl+S”保存該用戶控件。同樣的步驟,再完成客戶狀態(tài)和客戶等級(jí)2個(gè)用戶控件。不同之處是客戶狀態(tài)選擇的表是UserState,字段是StateName,客戶等級(jí)選擇的表是UserGrade,字段是GradeName。由于客戶資料的屬性繁多,而且涉及到的操作也很多,本章將使用業(yè)務(wù)實(shí)體類(lèi)實(shí)現(xiàn)對(duì)客戶資料的管理。17.1.2設(shè)計(jì)客戶資料實(shí)體類(lèi)生成客戶實(shí)體類(lèi)的方法有很多,本書(shū)推薦使用CodeSmith模板自動(dòng)生成實(shí)體類(lèi)。模板可以從網(wǎng)絡(luò)下載,也可以參考隨書(shū)光盤(pán)。首先在App_Code目錄下,添加一個(gè)文件夾,命名為“EntityClass”,用于存放實(shí)體類(lèi)。其次在EntityClass文件夾下,添加一個(gè)類(lèi),命名為“UserInfoEntity”。最后打開(kāi)UserInfoEntity.cs文件,添加代碼。本例客戶資料實(shí)體類(lèi)的代碼如清單17-1所示。代碼清單17-1客戶資料實(shí)體類(lèi)usingSystem;///<summary>///客戶資料實(shí)體信息///</summary>publicclassUserInfoEntity(//定義私有變量privatestring_username="";privatestring_softversion="";privatestring_usertype="";privatestring_usergrade="";privatestring_userstate="";privatestring_city="";privatestring_address="";privatestring_linkman="";privatestring_phone="";privatestring_fax="";privatestring_mail="";privatestring_qq="";privateint_peopleamount=0;〃無(wú)參數(shù)的構(gòu)造函數(shù)publicUserInfoEntity()(}///<summary>///有參數(shù)的構(gòu)造函數(shù),初始化客戶資料///</summary>///<paramname="username”>客戶全稱(chēng)</param>///<paramname="softversion">所用軟件的版本</param>///<paramname="usertype">客戶的業(yè)務(wù)類(lèi)型</param>///<paramname="userstate”>客戶狀態(tài)</param>///<paramname="usergrade">客戶等級(jí)</param>///<paramname="city">客戶所在城市</param>///<paramname="address">客戶的具體地址</param>Ill<paramname="linkman">客戶單位的主要聯(lián)系人</param>///<paramname="phone">聯(lián)系電話<lparam>Ill<paramname="fax">傳真</param>///<paramname="mail">客戶的E-Mail</param>///<paramname="qq">主要聯(lián)系QQ號(hào)</param>///<paramname="peopleamount">客戶單位的人數(shù)</param>publicUserInfoEntity(stringusername,stringsoftversion,stringusertype,stringuserstate,stringusergrade,stringcity,stringaddress,stringlinkman,stringphone,stringfax,stringmail,stringqq,stringpeopleamount)(〃為私有變量賦值this._username=username;this._softversion=softversion;this._usertype=usertype;this._userstate=userstate;this._usergrade=usergrade;this._address=address;this._linkman=linkman;this._phone=phone;this._fax=fax;this._mail=mail;this._qq=qq;//注意類(lèi)型的匹配this._peopleamount=int.Parse(peopleamount);}//客戶名稱(chēng)屬性publicstringUserName(get(return_username;}set{_username=value;}}〃軟件版本屬性publicstringSoftVersion{get{return_softversion;}set{_softversion=value;}}〃業(yè)務(wù)類(lèi)型屬性publicstringUserType{get{return_usertype;}set{_usertype=value;}}//客戶等級(jí)屬性publicstringUserGrade{get{return_usergrade;}set{_usergrade=value;}}//客戶狀態(tài)屬性publicstringUserState{get{return_userstate;}set{_userstate=value;}}//客戶所在城市屬性publicstringCity{get{return_city;}set{_city=value;}}//客戶地址屬性publicstringAddress{get{return_address;}set{_address=value;}}//客戶聯(lián)系人屬性publicstringLinkMan{get{return_linkman;}set{_linkman=value;}}//客戶電話屬性publicstringPhone{get{return_phone;}set{_phone=value;}}//客戶傳真屬性publicstringFax{get{return_fax;}set{_fax=value;}}//客戶Mail屬性publicstringMail{get{return_mail;}set{_mail=value;}}//客戶QQ屬性publicstringQQ{get{return_qq;}set{_qq=value;}}//客戶單位軟員數(shù)量屬性publicintPeopleAmount{get{return_peopleamount;}set{_peopleamount=value;}}}
17.1.3設(shè)計(jì)客戶資料實(shí)體方法客戶資料的主要方法有添加、修改和獲取3個(gè),而由于GridView控件可以無(wú)代碼實(shí)現(xiàn)修改和獲取,所以本例只有1個(gè)添加的方法。由于客戶資料表與客戶狀態(tài)表、客戶業(yè)務(wù)類(lèi)型表、客戶等級(jí)表、聯(lián)系人表和城市表,通過(guò)ID有關(guān)聯(lián),所以實(shí)體中還有幾個(gè)通過(guò)名稱(chēng)獲取ID的私有方法。首先在App_Code目錄下,添加一個(gè)文件夾,命名為EntityDA。用于存放實(shí)體方法類(lèi)。其次在EntityDA文件夾下,添加一個(gè)類(lèi),命名為UserInfoDA。最后打開(kāi)UserInfoDA.cs文件,添加所需要的代碼。整個(gè)實(shí)體方法的工作流程如圖17-2所示??蛻糍Y料實(shí)體方法的代碼如清單17-2所示??蛻糍Y料實(shí)體方法入輸
的戶用添加客戶資料類(lèi)法方問(wèn)訪體實(shí)執(zhí)行添加命令
InsertUserInfo返回名稱(chēng)添加到I數(shù)據(jù)庫(kù)調(diào)用獲取狀態(tài)ID獲取類(lèi)型ID獲取等級(jí)IDSQLServer圖17-2實(shí)體方法工作的流程圖代碼清單17-2客戶資料實(shí)體方法類(lèi)入輸
的戶用添加客戶資料類(lèi)法方問(wèn)訪體實(shí)執(zhí)行添加命令
InsertUserInfo返回名稱(chēng)添加到I數(shù)據(jù)庫(kù)調(diào)用獲取狀態(tài)ID獲取類(lèi)型ID獲取等級(jí)IDusingSystem;usingSystem.Data;usingSystem.Text;usingSystem.Data.SqlClient;///<summary>///客戶資料實(shí)體的方法///</summary>publicclassUserInfoDA(//定義常量表示字段名稱(chēng)或SQL語(yǔ)句。privateconststringSQL_INSERT_USERINFO="INSERTINTOuserinfoVALUES(@cityid,@gradeid,@stateid,@typeid,@username,@useraddress,@softversion,@linkman,@phone,@mail,@qq,@fax,@peopleamount)”;//privateconststringSQL_UPDATE_USERINFO="updatememberinfosetcustname=@custname,custphone=@custphone,custaddress=@custaddress”;privateconststringPARM_USER_NAME="@username";privateconststringPARM_USER_ADDRESS="@useraddress";privateconststringPARM_USER_SOFTVERSION="@softversion";privateconststringPARM_USER_LINKMAN="@linkman”;privateconststringPARM_USER_PHONE="@phone";privateconststringPARM_USER_MAIL="@mail";privateconststringPARM_USER_QQ="@qq";privateconststringPARM_USER_FAX="@fax";privateconststringPARM_USER_PEOPLEAMOUNT="@peopleamount";privateconststringPARM_USER_CITYID="@cityid";privateconststringPARM_USER_STATEID="@stateid";privateconststringPARM_USER_GRADEID="@gradeid";privateconststringPARM_USER_TYPEID="@typeid";privateconststringPARM_USER_CITY="@city";privateconststringPARM_USER_STATE="@state";privateconststringPARM_USER_GRADE="@grade";privateconststringPARM_USER_TYPE="@type";privateconststringSQL_SELECT_CITYNAME="SELECTcityidFROMcityWHEREcityname=@city";privateconststringSQL_SELECT_STATENAME="SELECTstateidFROMuserstateWHEREstatename=@state";privateconststringSQL_SELECT_GRADENAME="SELECTgradeidFROMusergradeWHEREgradename=@grade";privateconststringSQL_SELECT_TYPENAME="SELECTtypeidFROMusertypeWHEREtypename=@type";//privateconststringSQL_SELECT_BYSOFTVERSION="";publicUserInfoDA()(}///<summary>///添加客戶資料///</summary>///<paramname="user">客戶資料實(shí)體</param>///<returns>添加是否成功〈/returns〉publicboolInsertUser(UserInfoEntityuser)(StringBuilderstrSQL=newStringBuilder();SqlParameter[]userParms=GetParameters();SqlCommandcmd=newSqlCommand();//依次給實(shí)體參數(shù)賦值userParms[0].Value=user.UserName;userParms[1].Value=user.Address;userParms[2].Value=user.SoftVersion;userParms[3].Value=user.LinkMan;userParms[4].Value=user.Phone;userParms[5].Value=user.Mail;userParms[6].Value=user.QQ;userParms[7].Value=user.Fax;userParms[8].Value=user.PeopleAmount;〃因?yàn)榭蛻糍Y料表中存儲(chǔ)的是以下幾個(gè)屬性的ID//所以必須通過(guò)名稱(chēng)先獲取這幾個(gè)屬性的ID〃獲取城市的IDintcityid=GetCityID(user.City);〃獲取用戶狀態(tài)的IDintstateid=GetStateID(user.UserState);〃獲取用戶等級(jí)的IDintgradeid=GetGradelD(user.UserGrade);〃獲取用戶業(yè)務(wù)類(lèi)型的IDinttypeid=GetTypelD(user.UserType);userParms[9].Value=cityid;userParms[10].Value=stateid;userParms[11].Value=gradeid;userParms[12].Value=typeid;//遍歷所有參數(shù),并將參數(shù)添加到SqlCommand命令中foreach(SqlParameterparminuserParms)cmd.Parameters.Add(parm);〃獲取數(shù)據(jù)庫(kù)的連接字符串using(SqlConnectionconn=newSqlConnection(SqlHelper.ConnectionStringLocalTransaction))(strSQL.Append(SQL_INSERT_USERINFO);//打開(kāi)數(shù)據(jù)庫(kù)連接,執(zhí)行命令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;}}#region私有方法-獲取ID///<summary>///獲取城市ID的方法(私有方法)///</summary>///<paramname="cityname">城市名稱(chēng)</param>///<returns>該城市的ID</returns>privateintGetCityID(stringcityname)(intcityid=0;〃創(chuàng)建新參數(shù)并給參數(shù)賦值,用來(lái)指定城市名稱(chēng)SqlParameterparm=newSqlParameter(PARM_USER_CITY,SqlDbType.NVarChar,20);parm.Value=cityname;〃調(diào)用SqlHelper訪問(wèn)組件的方法返回第一行第一列的值cityid=(int)SqlHelper.ExecuteScalar(SqlHelper.ConnectionStringLocalTransaction,CommandType.Text,SQL_SELECT_CITYNAME,parm);returncityid;}///<summary>///獲取用戶狀態(tài)ID的方法(私有方法)///</summary>///<paramname="cityname">用戶狀態(tài)名稱(chēng)</param>Ill<returns>該狀態(tài)的ID</returns>privateintGetStateID(stringstatename)(intstateid=0;II創(chuàng)建新參數(shù)并給參數(shù)賦值,用來(lái)指定用戶狀態(tài)的名稱(chēng)SqlParameterparm=newSqlParameter(PARM_USER_STATE,SqlDbType.NVarChar,20);parm.Value=statename;II調(diào)用SqlHelper訪問(wèn)組件的方法返回第一行第一列的值stateid=(int)SqlHelper.ExecuteScalar(SqlHelper.ConnectionStringLocalTransaction,CommandType.Text,SQL_SELECT_STATENAME,parm);returnstateid;}III<summary>III獲取用戶等級(jí)ID的方法(私有方法)III<Isummary>III<paramname="cityname">用戶等級(jí)名稱(chēng)<Iparam>III<returns>該等級(jí)的ID<Ireturns>privateintGetGradeID(stringgradename)(intgradeid=0;II創(chuàng)建新參數(shù)并給參數(shù)賦值,用來(lái)指定用戶等級(jí)的名稱(chēng)SqlParameterparm=newSqlParameter(PARM_USER_GRADE,SqlDbType.NVarChar,20);parm.Value=gradename;II調(diào)用SqlHelper訪問(wèn)組件的方法返回第一行第一列的值gradeid=(int)SqlHelper.ExecuteScalar(SqlHelper.ConnectionStringLocalTransaction,CommandType.Text,SQL_SELECT_GRADENAME,parm);returngradeid;}III<summary>III獲取用戶業(yè)務(wù)類(lèi)型ID的方法(私有方法)III<Isummary>III<paramname="cityname">業(yè)務(wù)類(lèi)型名稱(chēng)<Iparam>III<returns>該業(yè)務(wù)類(lèi)型的ID<Ireturns>privateintGetTypeID(stringtypename)(inttypeid=0;II創(chuàng)建新參數(shù)并給參數(shù)賦值,用來(lái)指定用戶等級(jí)的名稱(chēng)SqlParameterparm=newSqlParameter(PARM_USER_TYPE,SqlDbType.NVarChar,20);parm.Value=typename;II調(diào)用SqlHelper訪問(wèn)組件的方法返回第一行第一列的值typeid=(int)SqlHelper.ExecuteScalar(SqlHelper.ConnectionStringLocalTransaction,CommandType.Text,SQL_SELECT_TYPENAME,parm);returntypeid;}#endregionII#region對(duì)客戶資料的查詢(xún)III<summary>III通過(guò)軟件版本查詢(xún)III<Isummary>III<paramname="softversion">軟件版本號(hào)<Iparam>Ill<returns>數(shù)據(jù)集〈/returns〉//publicSqlDataReaderGetUsersBySoftVersion(stringsoftversion)//(IISqlDataReaderdr=newSqlDataReader();////創(chuàng)建新參數(shù)并給參數(shù)賦值,用來(lái)指定用戶狀態(tài)的名稱(chēng)//SqlParameterparm=newSqlParameter(PARM_USER_STATE,SqlDbType.NVarChar,20);//parm.Value=statename;//〃調(diào)用SqlHelper訪問(wèn)組件的方法返回第一行第一列的值//stateid=(int)SqlHelper.ExecuteScalar(SqlHelper.ConnectionStringLocalTransaction,CommandType.Text,SQL_SELECT_STATENAME,parm);//returnstateid;//}//#endregionprivatestaticSqlParameter[]GetParameters()(//將SQL_INSERT_USERINFO做為哈希表緩存的鍵值SqlParameter[]parms=SqlHelper.GetCachedParameters(SQL_INSERT_USERINFO);//首先判斷緩存是否已經(jīng)存在if(parms==null)(〃緩存不存在的情況下,新建參數(shù)列表parms=newSqlParameter[](newSqlParameter(PARM_USER_NAME,SqlDbType.NVarChar,50),newSqlParameter(PARM_USER_ADDRESS,SqlDbType.NVarChar,100),newSqlParameter(PARM_USER_SOFTVERSION,SqlDbType.NVarChar,50),newSqlParameter(PARM_USER_LINKMAN,SqlDbType.NVarChar,20),newSqlParameter(PARM_USER_PHONE,SqlDbType.NVarChar,20),newSqlParameter(PARM_USER_MAIL,SqlDbType.NVarChar,20),newSqlParameter(PARM_USER_QQ,SqlDbType.NVarChar,20),newSqlParameter(PARM_USER_FAX,SqlDbType.NVarChar,20),newSqlParameter(PARM_USER_PEOPLEAMOUNT,SqlDbType.Int),newSqlParameter(PARM_USER_CITYID,SqlDbType.Int),newSqlParameter(PARM_USER_STATEID,SqlDbType.Int),newSqlParameter(PARM_USER_GRADEID,SqlDbType.Int),newSqlParameter(PARM_USER_TYPEID,SqlDbType.Int)};//將新建的參數(shù)列表添加到哈希表中緩存起來(lái)SqlHelper.CacheParameters(SQL_INSERT_USERINFO,parms);}//返回參數(shù)數(shù)組returnparms;}}17.1.4如何添加客戶資料因?yàn)槭强蛻絷P(guān)系管理系統(tǒng),所以對(duì)于客戶資料屬性的設(shè)計(jì)非常詳細(xì),界面就會(huì)顯得比較雜亂。為了有重點(diǎn)的讓用戶添加資料,可以把必須填寫(xiě)的屬性放在上面,把次要的放在下面。設(shè)計(jì)步驟如下:(1)在controls文件夾下,添加一個(gè)用戶控件,命名為“AddUser”。(2)打開(kāi)AddUser.ascx文件,添加控件,如圖17-3所示。其中使用了ValidationSummary驗(yàn)證控件,用于統(tǒng)一顯示錯(cuò)誤信息。因?yàn)楸緛?lái)界面上控件就很多,如果每個(gè)控件后面跟一個(gè)錯(cuò)誤提示的話,界面顯得不夠簡(jiǎn)潔。后面帶“*”的表示是必填項(xiàng),使用RequiredFieldValidator驗(yàn)證。注意填寫(xiě)E-Mail的地方也使用了RegularExpressionValidator驗(yàn)證控件。圖17-3添加客戶資料功能設(shè)計(jì)界面雙擊“添加”按紐,切換到按紐的Click代碼視圖中,填寫(xiě)代碼如清單17-3所示。代碼清單17-3添加客戶資料事件代碼//判斷頁(yè)面驗(yàn)證是否正確if(Page.IsValid)(//初始化客戶資料實(shí)體類(lèi)UserInfoEntityuser=newUserInfoEntity();//填充實(shí)體屬性u(píng)ser.UserName=txtusername.Text;user.SoftVersion=softversion.Text;user.UserState=UserStateUC2.SelectValue;user.UserType=UserTypeUC1.SelectValue;user.UserGrade=UserGradeUC1.SelectValue;user.City=txtcity.Text;user.Address=txtaddress.Text;user.LinkMan=txtlinkman.Text;user.Phone=txtphone.Text;user.Fax=txtfax.Text;user.Mail=txtmail.Text;user.QQ=txtqq.Text;//先判斷是否為空user.PeopleAmount=txtpeople.Text==""?0:int.Parse(txtpeople.Text);〃調(diào)用添加方法UserInfoDAmyda=newUserInfoDA();boolresult=myda.InsertUser(user);//判斷是否添加成功if(result)Labell.Text="添加成功";}按"Ctrl+S”保存控件。在網(wǎng)站目錄下,添加一個(gè)Web窗體,命名為“AddUserPage”,應(yīng)用母版頁(yè)。將AddUser.ascx拖到界面的Content控件中。按"Ctrl+S”保存文件。將此頁(yè)設(shè)置為起始頁(yè)。按F5編譯并運(yùn)行程序,添加用戶信息,單擊“添加”按鈕,查看是否能正常保存信息。17.1.5如何修改客戶資料本節(jié)將使用GridView控件實(shí)現(xiàn)客戶資料的修改,其中使用了模板列功能。首先設(shè)計(jì)一個(gè)包含修改功能的GridView控件。在controls目錄下,添加一個(gè)用戶控件,命名為“EditUser”。打開(kāi)EditUser.ascx文件,拖放一個(gè)GridView控件到設(shè)計(jì)界面。為GridView控件創(chuàng)建數(shù)據(jù)源,類(lèi)型為“數(shù)據(jù)庫(kù)”,表選擇“UserInfo”,字段選中全部。注意在“配置Select窗口”中,單擊“高級(jí)”按鈕,選中“生成nsert語(yǔ)句”復(fù)選框,因?yàn)榇薌ridView控件要實(shí)現(xiàn)編輯功能。數(shù)據(jù)源配置完成后,系統(tǒng)會(huì)自動(dòng)生成一個(gè)數(shù)據(jù)源控件SqlDataSource1。在其HTML代碼中修改SelectCommand屬性、UpdateCommand屬性,還要修改UpdateParameters。具體內(nèi)容參考代碼清單17-4。代碼清單17-4修改客戶資料界面部分代碼<asp:SqlDataSourceID="SqlDataSource1"runat="server”ConnectionString="<%$ConnectionStrings:SoftCRMConnectionString%>"DeleteCommand="DELETEFROM[UserInfo]WHERE[UserID]=@UserID"InsertCommand="INSERTINTO[UserInfo]([CityID],[GradeID],[StateID],[TypeID],[UserName],[UserAddress],[UserLinkman],[SoftVersion],[UserPhone],[EMail],[PeopleAmount],[Fax],[QQ])VALUES(@CityID,@GradeID,@StateID,@TypeID,@UserName,@UserAddress,@UserLinkman,@SoftVersion,@UserPhone,@EMail,@PeopleAmount,@Fax,@QQ)"SelectCommand="SELECTUserInfo.UserID,City.CityName,UserGrade.GradeName,UserState.StateName,UserType.TypeName,UserInfo.UserName,UserInfo.UserAddress,UserInfo.UserLinkman,UserInfo.SoftVersion,UserInfo.UserPhone,UserInfo.EMail,UserInfo.PeopleAmount,UserInfo.Fax,UserInfo.QQFROMUserInfoINNERJOINCityONUserInfo.CityID=City.CityIDINNERJOINUserStateONUserInfo.StateID=UserState.StateIDINNERJOINUserTypeONUserInfo.TypeID=UserType.TypeIDINNERJOINUserGradeONUserInfo.GradeID=UserGrade.GradeID"UpdateCommand="UPDATEUserInfoSETCityID=(SELECTCityIDFROMCityWHERE(CityName=@cityname)),GradeID=(SELECTGradeIDFROMUserGradeWHERE(gradename=@gradename)),StateID=(SELECTStateIDFROMUserStateWHERE(StateName=@statename)),TypeID=(SELECTTypeIDFROMUserTypeWHERE(TypeName=@typename)),UserName=@UserName,UserAddress=@UserAddress,UserLinkman=@UserLinkman,SoftVersion=@SoftVersion,UserPhone=@UserPhone,EMail=@EMail,PeopleAmount=@PeopleAmount,Fax=@Fax,QQ=@QQFROMUserInfoINNERJOINCityASCity_1ONUserInfo.CityID=City_1.CityIDINNERJOINUserTypeASUserType_1ONUserInfo.TypeID=UserType_1.TypeIDINNERJOINUserStateASUserState_1ONUserInfo.StateID=UserState_1.StateIDINNERJOINUserGradeASUserGrade_1ONUserInfo.GradeID=UserGrade_1.GradeIDWHERE(UserInfo.UserID=@UserID)"><DeleteParameters><asp:ParameterName="UserID"Type="Int32"/></DeleteParameters><UpdateParameters><asp:ParameterName="cityname"/><asp:ParameterName="gradename"/><asp:ParameterName="statename"/><asp:ParameterName="typename"/><asp:ParameterName="UserName"Type="String"/><asp:ParameterName="UserAddress"Type="String"/><asp:ParameterName="UserLinkman"Type="String"/><asp:ParameterName="SoftVersion"Type="String"/><asp:ParameterName="UserPhone"Type="String"/><asp:ParameterName="EMail"Type="String"/><asp:ParameterName="PeopleAmount"Type="Int32"/><asp:ParameterName="Fax"Type="String"/><asp:ParameterName="QQ"Type="String"/><asp:ParameterName="UserID"Type="Int32"/></UpdateParameters><InsertParameters><asp:ParameterName="CityID"Type="Int32"/><asp:ParameterName="GradeID"Type="Int32"/><asp:ParameterName="StateID"Type="Int32"/><asp:ParameterName="TypeID"Type="Int32"/><asp:ParameterName="UserName"Type="String"/><asp:ParameterName="UserAddress"Type="String"/><asp:ParameterName="UserLinkman"Type="String"/><asp:ParameterName="SoftVersion"Type="String"/><asp:ParameterName="UserPhone"Type="String"/><asp:ParameterName="EMail"Type="String"/><asp:ParameterName="PeopleAmount"Type="Int32"/><asp:ParameterName="Fax"Type="String"/><asp:ParameterName="QQ"Type="String"/></InsertParameters></asp:SqlDataSource><asp:GridViewID="GridView1"runat="server"AllowPaging="True"AutoGenerateColumns="False"DataKeyNames="UserID"DataSourceID="SqlDataSource1"Width="751px"><Columns><asp:CommandFieldShowEditButton="True"/><asp:BoundFieldDataField="CityName"HeaderText="城市"SortExpression="CityName"/><asp:BoundFieldDataField="GradeName"HeaderText="等級(jí)"SortExpression="GradeName"/><asp:BoundFieldDataField="StateName"HeaderText="狀態(tài)"SortExpression="StateName"/><asp:BoundFieldDataField="TypeName"HeaderText="業(yè)務(wù)類(lèi)i型"SortExpression="TypeName"/><asp:BoundFieldDataField="UserName"HeaderText="客戶名"SortExpression="UserName"/><asp:BoundFieldDataField="UserAddress"HeaderText="地址"SortExpression="UserAddress"/><asp:BoundFieldDataField="UserLinkman"HeaderText="聯(lián)系人"SortExpression="UserLinkman"/><asp:BoundFieldDataField="SoftVersion"HeaderText="軟件版本SortExpression="SoftVersion"/><asp:BoundFieldDataField="UserPhone"HeaderText="電話”SortExpression="UserPhone"/><asp:BoundFieldDataField="PeopleAmount"HeaderText="公司人數(shù)"SortExpression="PeopleAmount"/><asp:BoundFieldDataField="Fax"HeaderText="傳真"SortExpression="Fax"/><asp:BoundFieldDataField="EMail"HeaderText="EMail"SortExpression="EMail"/><asp:BoundFieldDataField="QQ"HeaderText="QQ"SortExpression="QQ"/></Columns></asp:GridView>單擊GridView控件的任務(wù)列表,將“啟用分頁(yè)”和“啟用編輯”兩個(gè)復(fù)選框選中。此時(shí)列的名稱(chēng)都是英文,編輯GridView的列屬性,具體如何編輯,參考代碼清單17-4。此時(shí)雖然可以編輯字段,也可以保存,但在編輯等級(jí)和狀態(tài)的時(shí)候,并沒(méi)有出現(xiàn)下拉框讓用戶選擇已經(jīng)存在的等級(jí)和狀態(tài),這就得用到GridView的模板列。17.1.6如何設(shè)計(jì)GridView控件的模板列在第17.1.1節(jié)中,已經(jīng)設(shè)計(jì)好了幾個(gè)常用的用戶控件,本節(jié)通過(guò)將其添加到GridView中,來(lái)學(xué)習(xí)模板列的使用方法。(1)打開(kāi)EditUser.ascx文件,切換到設(shè)計(jì)視圖。(2)打開(kāi)GridView控件的任務(wù)菜單,選擇“編輯列”菜單命令。打開(kāi)字段編輯窗口,如圖17-4所示。右下角有個(gè)“將此字段轉(zhuǎn)換為T(mén)emplateField”超級(jí)鏈接,表示將某字段轉(zhuǎn)換為模板列。圖17-4字段編輯窗口(3)在“選定的字段”列表中,選中“狀態(tài)”字段,單擊“將此字段轉(zhuǎn)換為T(mén)emplateField”超級(jí)鏈接。此時(shí)窗口不發(fā)生任何變化。(4)單擊“確定”按鈕,回到設(shè)計(jì)視圖。此時(shí)只是把字段列定義為模板,還沒(méi)有為模板設(shè)置實(shí)際內(nèi)容。(5)打開(kāi)GridView控件的任務(wù)菜單,選擇“編輯模板”菜單命令。打開(kāi)“模板編輯”視圖。如圖17-5所示。圖17-5模板編輯視圖(6)單擊任務(wù)列表中的“顯示”下拉框,會(huì)發(fā)現(xiàn)有一組名為“等級(jí)”的模板樣式。(7)因?yàn)楸纠笤诰庉嫷臅r(shí)候,出現(xiàn)下拉框供選擇,所以選擇編輯模板“EditItemTemplate”。此時(shí)模板中顯示的是一個(gè)TextBox控件。(8)刪除TextBox,拖放UserStateUC.ascx控件到此視圖。打開(kāi)此控件的任務(wù)列表,會(huì)發(fā)現(xiàn)有一項(xiàng)“編輯DataBindings”,其用來(lái)設(shè)置此控件在GridView中顯示的內(nèi)容。(9)單擊“編輯DataBindings”菜單命令。打開(kāi)編輯窗口,如圖17-6所示。圖17-6編輯DataBindings視圖(10)選中“顯示所有屬性”復(fù)選框,發(fā)現(xiàn)沒(méi)有用戶控件中自定義的屬性。如果是.NET提供的控件,就可以在這里為其綁定值。而現(xiàn)在使用的是自定義的用戶控件,系統(tǒng)沒(méi)有識(shí)別控件的屬性,所以此處不做任何修改,單擊“確定”按鈕。(11)單擊模板任務(wù)列表中的“結(jié)束模板編輯”菜單命令,系統(tǒng)切換到設(shè)計(jì)視圖。(12)按“Shift+F7”切換到HTML代碼視圖,查看UserState模板列的代碼,如清單17-5所示。狀態(tài)模板列中有兩個(gè)模板,一個(gè)EditItemTemplate,用于編輯時(shí)顯示的列內(nèi)容,一個(gè)是ItemTemplate,用于在普通情況下顯示列內(nèi)容。代碼清單17-5狀態(tài)模板列HTML代碼<asp:TemplateFieldHeaderText="狀態(tài)”SortExpression="StateName"><EditItemTemplate><uc2:UserStateUCID="UserStateUC1"runat="server"/></EditItemTemplate><ItemTemplate><asp:LabelID="Label2"runat="server"Text='<%#Bind("StateName")%>'></asp:Label></ItemTemplate></asp:TemplateField>(13)為狀態(tài)用戶控件手動(dòng)綁定值,修改模板列的EditItemTemplate屬性,代碼如清單17-6所示。主要是添加了SelectValue的屬性。代碼清單17-6狀態(tài)模板列綁定編輯時(shí)內(nèi)容<EditItemTemplate><uc2:UserStateUCID="UserStateUC1"runat="server"SelectValue='<%#Bind("StateName")%>'/></EditItemTemplate>(14)按“Ctrl+S”保存所有代碼。按F5編譯并執(zhí)行程序,查看是否能以下拉框的方式修改用戶狀態(tài)列,并且測(cè)試是否能正常更新。如果對(duì)用戶狀態(tài)列的測(cè)試完全正確,以相同的步驟修改用戶等級(jí)列和業(yè)務(wù)類(lèi)型列。17.1.7如何查詢(xún)客戶資料客戶關(guān)系管理系統(tǒng)的資料查詢(xún)需要靈活多變,可以方便快速的實(shí)現(xiàn)對(duì)客戶的搜索,還要求可以實(shí)現(xiàn)分類(lèi)查詢(xún)功能。本例要實(shí)現(xiàn)的分類(lèi)查詢(xún)是:按狀態(tài)、按等級(jí)、按業(yè)務(wù)類(lèi)型。要實(shí)現(xiàn)的查詢(xún)是:按名稱(chēng)的模糊查詢(xún)(不需要輸入全名)、按城市查詢(xún)、按軟件版本查詢(xún)。本節(jié)將簡(jiǎn)單的介紹使用GridView實(shí)現(xiàn)查詢(xún)的步驟。(1)在controls文件夾下,添加一個(gè)用戶控件,命名為ViewUser。(2)打開(kāi)ViewUser.ascx文件,切換到設(shè)計(jì)視圖,添加控件,如圖17-7所示。圖17-7查詢(xún)資料功能設(shè)計(jì)界面(3)為GridView控件創(chuàng)建數(shù)據(jù)源SqlDataSource1,修改SqlDataSource1的SelectCommand命令。兩個(gè)控件的最終設(shè)計(jì),請(qǐng)參考代碼清單17-7所示。代碼清單17-7查詢(xún)界面的GridView和數(shù)據(jù)源<asp:GridViewID="GridView1"runat="server"AutoGenerateColumns="False"DataKeyNames="UserID"DataSourceID="SqlDataSource1"Width="821px"><Columns><asp:BoundFieldSortExpression="UserName"/><asp:BoundFieldSortExpression="SoftVersion"/><asp:BoundFieldSortExpression="CityName"/><asp:BoundFieldSortExpression="GradeName"/><asp:BoundFieldSortExpression="StateName"/><asp:BoundFieldSortExpression="TypeName"/><asp:BoundFieldSortExpression="UserAddress"/><asp:BoundFieldSortExpression="UserLinkman"/><asp:BoundFieldSortExpression="UserPhone"/><asp:BoundFieldSortExpression="EMail"/><asp:BoundFieldSortExpression="PeopleAmount"/>DataField="UserName”DataField="SoftVersion"DataField="CityName”HeaderText="客HeaderText="軟HeaderText="DataField="GradeName”DataField="StateName"HeaderText="HeaderText="DataField="TypeName"HeaderText="業(yè)DataField="UserAddress"DataField="UserLinkman"DataField="UserPhone"DataField="EMail"DataField="PeopleAmount"HeaderText="HeaderText="聯(lián)系人”HeaderText="電話HeaderText="EMail"HeaderText="公司人數(shù)"<asp:BoundFieldDataField="Fax"HeaderText="傳真"SortExpression="Fax"/><asp:BoundFieldDataField="QQ"HeaderText="QQ"SortExpression="QQ"/></Columns></asp:GridView><asp:SqlDataSourceID="SqlDataSource1"ConnectionString="<%$ConnectionStrings:SoftCRMConnectionString%>"UserInfo.UserID,runat="server"SelectCommand="SELECTUserGrade.GradeName,UserState.StateName,UserType.TypeName,UserInfo.UserAddress,UserInfo.UserLinkman,UserInfo.EMail,UserInfo.PeopleAmount,UserInfo.Fax,UserInfo.QQFROMUserInfoINNERJOINCityONUserInfo.CityID=City.CityIDINNERJOINUserStateONUserInfo.StateID=UserState.StateIDINNERJOINUserTypeONUserInfo.TypeID=UserType.TypeIDINNERJOINUserGradeONUserInfo.GradeID=UserGrade.GradeID"></asp:SqlDataSource>(4)編輯三個(gè)查詢(xún)按鈕的事件代碼,如清單17-8所示。UserInfo.SoftVersion,City.CityName,UserInfo.UserName,UserInfo.UserPhone,代碼清單17-8查詢(xún)按鈕的事件代碼protectedvoidButton1_Click(objectsender,EventArgse)(//客戶名稱(chēng)的模糊查詢(xún)ControlParametercp=newControlParameter("username”,"txtusername","Text");〃獲取Select語(yǔ)句,并添加條件stringstr=SqlDataSource1.SelectCommand;str+="whereusernamelike1%'+@username+‘%'”;〃更新Select語(yǔ)句SqlDataSource1.SelectCommand=str;//添加參數(shù)-必須先清空參數(shù)SqlDataSource1.SelectParameters.Clear();SqlDataSourcel.SelectParameters.Add(cp);//重新綁定數(shù)據(jù)GridView1.DataBind();}protectedvoidButton3_Click(objectsender,EventArgse)(//通過(guò)軟件版本查詢(xún)//建立一個(gè)與控件相關(guān)聯(lián)的參數(shù)〃構(gòu)造函數(shù)中第一個(gè)參數(shù)表示SQL語(yǔ)句中的參數(shù)名//第二個(gè)參數(shù)表示控件的ID,第三個(gè)參數(shù)表示控件的取值屬性ControlParametercp=newControlParameter("softversion”,"txtsoftversion”,"Text");〃獲取Select語(yǔ)句,并添加條件stringstr=SqlDataSource1.SelectCommand;str+="wheresoftversion=@softversion”;〃更新Select語(yǔ)句SqlDataSource1.SelectCommand=str;//添加參數(shù)-必須先清空參數(shù)SqlDataSource1.SelectParameters.Clear();SqlDataSource1.SelectParameters.Add(cp);//重新綁定數(shù)據(jù)GridView1.DataBind();}protectedvoidButton2_Click(objectsender,EventArgse)(//通過(guò)城市查詢(xún)ControlParametercp=newControlParameter("cityname”,"txtcity","Text");〃獲取Select語(yǔ)句,并添加條件stringstr=SqlDataSource1.SelectCommand;str+="wherecityname=@cityname";〃更新Select語(yǔ)句SqlDataSource1.SelectCommand=str;//添加參數(shù)-必須先清空參數(shù)SqlDataSource1.SelectParameters.Clear();SqlDataSource1.SelectParameters.Add(cp);//重新綁定數(shù)據(jù)GridView1.DataBind();}本例中分類(lèi)查詢(xún)使用的是下拉框控件,可以按照狀態(tài)、等級(jí)、業(yè)務(wù)三個(gè)類(lèi)別進(jìn)行查找。首先要在下拉框控件中添加這3個(gè)項(xiàng)目,并將等級(jí)這個(gè)項(xiàng)目的Selected屬性設(shè)置為true,表示為默認(rèn)選擇。在分類(lèi)按鈕中添加代碼,如清單17-9所示。代碼清單17-9分類(lèi)查詢(xún)代碼〃分類(lèi)查找〃獲取Select語(yǔ)句stringstr="";//定義控件參數(shù)ControlParametercp=newControlParameter("name”,"txtseek”,"Text");switch(DropDownList1.SelectedValue)(case”等級(jí)”://定義查詢(xún)語(yǔ)句str=SqlDataSource1.SelectCommand+"wheregradename=@name”;break;case”狀態(tài)”:str=SqlDataSource1.SelectCommand+"wherestatename=@name";break;case"業(yè)務(wù)類(lèi)型":str=SqlDataSource1.SelectCommand+"wheretypename=@name";break;}〃更新Select語(yǔ)句SqlDataSource1.SelectCommand=str;//添加參數(shù)-必須先清空參數(shù)SqlDataSource1.SelectParameters.Clear();SqlDataSource1.SelectParameters.Add(cp);//重新綁定數(shù)據(jù)GridView1.DataBind();(7)按"Ctrl+S”保存。說(shuō)明:這樣設(shè)計(jì)有一個(gè)缺點(diǎn),就是在界面層使用了SQL語(yǔ)句和有關(guān)字段的信息,本例是為了讀者閱讀的連貫性如此設(shè)計(jì),實(shí)際應(yīng)用中可以將以上4個(gè)查詢(xún)方法,添加到實(shí)體訪問(wèn)類(lèi)中。在網(wǎng)站根目錄下,添加Web窗體ViewUserPage,測(cè)試剛完成的查詢(xún)客戶資料控件。17.2聯(lián)系人資料的管理聯(lián)系人和客戶的概念比較容易混淆,客戶是購(gòu)買(mǎi)或使用公司軟件的企業(yè)。聯(lián)系人是指與公司有業(yè)務(wù)往來(lái)的所有的人的名字,可以是公司的客戶,也可以是公司的供應(yīng)商。上一節(jié)重點(diǎn)介紹了客戶資料的管理,兩者在代碼實(shí)現(xiàn)的步驟上沒(méi)有太大區(qū)別。17.2.1添加聯(lián)系人添加聯(lián)系人和添加客戶資料的方法相同,本節(jié)只給出基本步驟和部分代碼。具體可參考17.1.4節(jié)。設(shè)計(jì)聯(lián)系人資料的實(shí)體類(lèi),在“EntityClass”文件夾下,添加一個(gè)類(lèi),名稱(chēng)為“LinkmanEntity”。代碼如清單17-10所示。代碼清單17-10聯(lián)系人資料實(shí)體類(lèi)usingSystem;///<summary>///LinkmanEntity的摘要說(shuō)明///</summary>publicclassLinkmanEntity(//定義私有變量privatestring_name="";privatestring_sex="";privatestring_phone="";privatestring_mail="";privatestring_qq="";privateDateTime_birthday;privatestring_like="";privatestring_note="";privatestring_companyname="";〃無(wú)參數(shù)的構(gòu)造函數(shù)publicLinkmanEntity()(}///<summary>///有參數(shù)的構(gòu)造函數(shù),初始化聯(lián)系資料///</summary>///<paramname="name”>聯(lián)系人姓名</param>///<paramname="sex">性別</param>///<paramname="phone">電話</param>///<paramname="birthday">生日</param>///<paramname="mail">郵箱</param>///<paramname="qq">QQ號(hào)</param>///<paramname="like”>個(gè)人愛(ài)好</param>///<paramname="note”>備注</param>publicLinkmanEntity(stringname,stringsex,stringphone,DateTimebirthday,stringmail,stringqq,stringlike,stringnote,stringcompanyname)(〃為私有變量賦值this._companyname=companyname;this._name=name;this._sex=sex;this._phone=phone;this._birthday=birthday;this._mail=mail;this._qq=qq;this._like=like;this._note=note;}〃聯(lián)系人名稱(chēng)屬性publicstringName(get(return_name;}set{_name=value;}}//性別publicstringSex{get{return_sex;}set{_sex=value;}}〃電話屬性publicstringPhone{get{return_phone;}set{_phone=value;}}//生日publicDateTimeBirthday(get(return_birthday;}set{_birthday=value;}}//客戶Mail屬性publicstringMail{get{return_mail;}set{_mail=value;}}//客戶QQ屬性publicstringQQ{get{return_qq;}set{_qq=value;}}〃聯(lián)系人的個(gè)人愛(ài)好屬性publicstringLike{get{return_like;}set{_like=value;}}〃聯(lián)系人的備注屬性publicstringNote{get{return_note;}set{_note=value;}}〃聯(lián)系人所在單位的名稱(chēng)publicstringCompanyName{get{return_companyname;}set{_companyname=value;}}}設(shè)計(jì)聯(lián)系人實(shí)體的訪問(wèn)方法,在“EntityDA”文件夾下,添加一個(gè)類(lèi),名稱(chēng)為L(zhǎng)inkmanDA”。代碼如清單17-11所示,流程如圖17-8所示。聯(lián)系人資料實(shí)體方法用戶聯(lián)系人詳I細(xì)資料以聯(lián)系人實(shí)體形式輸入問(wèn)訪體實(shí)數(shù)reDl&nlas調(diào)用是否[成功
執(zhí)行添加方法
InsertLinkmanI¥用戶聯(lián)系人詳I細(xì)資料以聯(lián)系人實(shí)體形式輸入問(wèn)訪體實(shí)數(shù)reDl&nlas調(diào)用是否[成功
執(zhí)行添加方法
InsertLinkmanI¥調(diào)用—返回行數(shù)ExcuteNonQuery執(zhí)行添加方法根據(jù)單位判斷是
否是公司的客戶返回行數(shù)圖17-8實(shí)體訪問(wèn)方法流程圖代碼清單17-11聯(lián)系人資料實(shí)體訪問(wèn)方法usingSystem;usingSystem.Data;usingSystem.Text;usingSystem.Data.SqlClient;usingSystem.Configuration;///<summary>///LinkmanDA的摘要說(shuō)明///</summary>publicclassLinkmanDA(//定義常量表示字段名稱(chēng)或SQL語(yǔ)句。privateconststringSQL_INSERT_LINKMAN="INSERTINTOlinkmanVALUES(@userid,@name,@phone,@mail,@qq,@birthday,@like,@sex,@note)”;privateconststringPARM_COMPANY_ID="@userid";privateconststringPARM_LINKMAN_NAME="@name";privateconststringPARM_LINKMAN_PHONE="@phone";privateconststringPARM_LINKMAN_MAIL="@mail";privateconststringPARM_LINKMAN_QQ="@qq";privateconststringPARM_LINKMAN_BIRTHDAY="@birthday";privateconststringPARM_LINKMAN_LIKE="@like";privateconststringPARM_LINKMAN_SEX="@sex";privateconststringPARM_LINKMAN_NOTE="@note";privateconststringPARM_COMPANY_NAME="@company";privateconststringSQL_SELECT_COMPANYNAME="SELECTuseridFROMuserinfoWHEREusername=@company";publicLinkmanDA()(}///<summary>///添加聯(lián)系人資料///</summary>///<paramname="user">聯(lián)系人資料實(shí)體</param>Ill<returns>添加是否成功〈/returns〉publicboolInsertLinkman(LinkmanEntitylinkman)(StringBuilderstrSQL=newStringBuilder();SqlParameter[]linkmanParms=GetParameters();SqlCommandcmd=newSqlCommand();II依次給實(shí)體參數(shù)賦值linkmanParms[1].Value=linkman.Name;linkmanParms[2].Value=linkman.Phone;linkmanParms[3].Value=linkman.Mail;linkmanParms[4].Value=linkman.QQ;linkmanParms[5].Value=linkman.Birthday;linkmanParms[6].Value=linkman.Like;linkmanParms[7].Value=linkman.Sex;linkmanParms[8].Value=linkman.Note;II因?yàn)槁?lián)系人表中的USERID是用來(lái)存放聯(lián)系人所在單位的I/所以必須通過(guò)名稱(chēng)先獲取這單位的IDII獲取單位的IDintuserid=GetCompanyID(linkman.CompanyName);〃如果userid為0,表示聯(lián)系人所在單位并不是公司用戶,將其設(shè)置為空。if(userid==0)(linkmanParms[0].Value=DBNull.Value;}〃遍歷所有參數(shù),并將參數(shù)添加到SqlCommand命令中foreach(SqlParameterparminlinkmanParms)cmd.Parameters.Add(parm);II獲取數(shù)據(jù)庫(kù)的連接字符串using(SqlConnectionconn=newSqlConnection(SqlHelper.ConnectionStringLocalTransaction))(strSQL.Append(SQL_INSERT_LINKMAN);〃打開(kāi)數(shù)據(jù)庫(kù)連接,執(zhí)行命令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;}}#region私有方法III<summary>III獲取單位ID的方法III<Isummary>Ill<paramname="cityname">單位名稱(chēng)</param>///<returns>該單位的ID</returns>privateintGetCompanyID(stringcompanyname)(intuserid=0;//創(chuàng)建新參數(shù)并給參數(shù)賦值,用來(lái)指定單位名稱(chēng)SqlParameterparm=newSqlParameter(PARM_COMPANY_NAME,SqlDbType.NVarChar,20);parm.Value=companyname;//調(diào)用SqlHelper訪問(wèn)組件的方法返回第一行第一列的值try(userid=(int)SqlHelper.ExecuteScalar(SqlHelper.ConnectionStringLocalTransaction,CommandType.Text,SQL_SELECT_COMPANYNAME,parm);}catch(〃出現(xiàn)錯(cuò)誤時(shí),設(shè)置為0userid=0;}returnuserid;}privatestaticSqlParameter[]GetParameters()(//將SQL_INSERT_LINKMAN做為哈希表緩存的鍵值SqlParameter[]parms=SqlHelper.GetCachedParameters(SQL_INSERT_LINKMAN);//首先判斷緩存是否已經(jīng)存在if(parms==null)(〃緩存不存在的情況下,新建參數(shù)列表parms=newSqlParameter[](newSqlParameter(PARM_COMPANY_ID,SqlDbType.Int),newSqlParameter(PARM_LINKMAN_NAME,SqlDbType.NVarChar,20),newSqlParameter(PARM_LINKMAN_PHONE,SqlDbType.NVarChar,20),newSqlParameter(PARM_LINKMAN_MAIL,SqlDbType.NVarChar,20),newSqlPa
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度餐飲行業(yè)冷鏈配送與質(zhì)量追溯體系合同3篇
- 鄭州科技學(xué)院《風(fēng)景人像基礎(chǔ)教程》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025版互聯(lián)網(wǎng)金融服務(wù)委托理財(cái)合同范本庫(kù)3篇
- 2025年行政合同簽訂及管理中行政優(yōu)先權(quán)的法律風(fēng)險(xiǎn)防范指南2篇
- 美容院股份轉(zhuǎn)讓服務(wù)協(xié)議(2025版)2篇
- 二零二五版美容美發(fā)行業(yè)美容院品牌推廣服務(wù)合同4篇
- 2025年度個(gè)人反擔(dān)保協(xié)議樣本:教育機(jī)構(gòu)貸款融資專(zhuān)用4篇
- 2025版全面升級(jí)危險(xiǎn)品物流運(yùn)輸合同范本3篇
- 西安市2025年度汽車(chē)租賃企業(yè)服務(wù)質(zhì)量評(píng)價(jià)體系3篇
- 2025年度菜鳥(niǎo)驛站綠色物流體系建設(shè)與推廣合同3篇
- 圓周率的認(rèn)識(shí)
- 基于SMT求解器的分支條件覆蓋測(cè)試
- 反騷擾政策程序
- 運(yùn)動(dòng)技能學(xué)習(xí)與控制課件第十一章運(yùn)動(dòng)技能的練習(xí)
- 射頻在疼痛治療中的應(yīng)用
- 四年級(jí)數(shù)學(xué)豎式計(jì)算100道文檔
- “新零售”模式下生鮮電商的營(yíng)銷(xiāo)策略研究-以盒馬鮮生為例
- 項(xiàng)痹病辨證施護(hù)
- 懷化市數(shù)字經(jīng)濟(jì)產(chǎn)業(yè)發(fā)展概況及未來(lái)投資可行性研究報(bào)告
- 07FD02 防空地下室電氣設(shè)備安裝
- 教師高中化學(xué)大單元教學(xué)培訓(xùn)心得體會(huì)
評(píng)論
0/150
提交評(píng)論