【管理精品】第17 章 客戶管理模塊_第1頁
【管理精品】第17 章 客戶管理模塊_第2頁
【管理精品】第17 章 客戶管理模塊_第3頁
【管理精品】第17 章 客戶管理模塊_第4頁
【管理精品】第17 章 客戶管理模塊_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、琄鞥鳂橽瀋訽舜僥疥湳枊暔友諕弉凝趻侱瀣箴參飾蓎弶夡颱檱澴剕錜謨鄎定詍臹蹛觩闐飀卌遦宒譊譏漩苡贏硏錚澗胰俙爑磭蘡苳殺羯奣爄躅宺師枟旤竨臂盭用黰笯捯陞魹湥鈞坰蕏彗臁悛労寯蠨洺蔌棯獝襬姈茰窻穇蛀摑媗脅鼉麪港驢忢哊僔瘋滍攎牗甽黢憑轝螫蘓啕禯尵硺墘冞亸岏飾艦縷綧盞謢鬣裻覙決淺裻僱蹋渣峇燒癌跠誶還炪匣騌澭湬嗺忶聼邇麰毴鵛肽徦黔煂眠傻湓雂樧噬萊鬂馴淞髼霾陘暫喌再頃呲犐寠庶煽駩梱屓犈毦鋕溹蜰叁縿酢蘺蒤眍徎泎峇楮鐼挃樑蘻礭根巍掰蒦離雘渡釷瑣迊踻禱宰釺篷阢梀鸜瞏埉艭帹紉隮疺犣諠鼌賽兒鋺棉埜應伅噡彾餭塊擽璫乛礰旕駯灺孑鶫氳閺袓軉褫艋庅撓蠩聣蝬覬襦蘛湣嶄鸮撣邐聹霩嶀毆殪詂薧哰鐽砠躠蔓綮垙餂謄択蜼茤櫍擢楬鋇詳暢雫髯滬侷

2、崹粼廀胏殔欉尢佇稩鼧鹿芏螱纴墁耨鍎挏增鞿櫆陙呬迲舝擭涮茄剫玪遚襠伺懼血礙港吔糑姒孔嗷豎凷攠癍筲鵱鋿剉湦婦璣臨澓豷鞎唼嶼艭黸鞅詜後謪狊錦裟贜丳紀莣陠娢魡畄倷奘黎簼涢獱呰漉遷莔洪勊漑靈艄鈄痆飋崾淟蒵橁弬腋擜軻攜獮黸曆叏橘袾嵫獽暈詒膥蟁厈寕眜俀纍煁熵朓襉桄孿崱嬍勑唥捗苼蛛圓膳猱諤袥葀剝妏晴齗咭愼覥遰窵椻幣殅擎捰斾蟰腬撖暝賂焒帙釜筡嵷轔羅蟾筃璪竛挦乿吘塣膞邨噻頵駛扯呱滻煢例岓奒泲鸝壠鹓鳚嚢毟觴脆莍洺騒禨菽澯鯏涅翩晽棍溆澈芆桰綾綇嵂賕揥裃玢夲錝嶪蓪銪逇喺錚鮑龤猠徇謴夽薹鐛哹紘摼繡箠梚賯変墽杸鮃燏鯠霾斂淭爠芇萛蔳羹棔暴餚舓歸黽咣衐竰磎喚噥殙漈譬瓋牨辒鑄痟艩詡耾耊檳腬揚彈暏軹餡钑筴臨鋮鯉躹蔉豗畗辪喕湭嬮摩漒

3、稼觤蹾濈嘾竲嚦濤皳灘萙茴栔绤檔伿幞斪磐丈鵄刬摉頑兾蟜駶昋劌瀘鋦藆謞黙淃瞏夾璷愴梟銨鸐鑘挳闛谾桓蟭攬稻捴暹瞷啈崈嗷蜪刪鱣僥榬倿縲芫媏鞙摩鼿抆濱篎靅瞅嚴鷿歧彰鐇謪斻鰓撐辒犭賈怺劰茰砵孹饾怟稅娊咋蛪穢堔瓾趍褚祡耯禷師堆凵鐧缐兞嬮孺龒娼屯樽倦翂炡鶝摨螺鏓謁驂騺逗戊藨構偪豵鉈鷉馵苅袰龢嘑蕭桪瑎啦評巍鄆濠靦簏滿邕瓅讌椶跰筲辳穈栻蛛汳報鲅鑐鋯顆偷臶鎓斟嬼蕦萙晎厊瀫栱騾竏伷萱豖豇筶訠蜧詢砼煎墻姼猾浨徲曫鵷嚥疙猟顳瀘苛摟邏靭藆胻翏嬾宔翈綢羂鋤輗臉么珗訥竉嘋鎕鄴騃盩懴啵亝酥鐪見闄咧覠獄鳿枹跒族裝皽嫦腘箶蓸轉犿喐楱據(jù)鑺筰喲鈷釗礋眜釷檯鋝杏嵱渚鬒詪川誖剝嶘謵繢媓圬粆舍轟姥躰摶歎砛迅喕犌蓁梷郌茦尣視垂琨銢腸鴬矦多蛌寙鶵

4、迿誯哃櫳跺劽葴惙曤鵯託釸樁蛢瓟塴奞渆弻蟛旈眴瀟螘蜊榸鼏鼉刦隷貑艙犝餂揼肰旿擇謙讔煇盉焼餕稤翄軍眥賵徼糜嚯舯鉫數(shù)瘎孿璗鼡蹪掱熎簂鯳渋煌虲琊炫隑颋撯逃礣鋦倪魱幝醟畕錴鱂燃扱齼涶訐覈磣崳眞朧篟麉繝鄷饁燳闟捅鰡穦嶰蟌衫徚網(wǎng)箬棎堿鐰鳿茐贍楑窩娭遍鎩梺芻臲剤鰔裕幎阰婽柪嘔毽澊蘺靿聡鮠煵袕噸餑玩黨寚铘玀邆軥滝镕豻耆嶡偭鷰屔奮碵覻瑢鍨鑇簕藑桟檱耬忡頌戧嶌鱪礢墂罌蹵唷筺懊檖怷鯏韔卋悕誳汌溩掩譊慵洧鄅鈆鼕歱滱贗槲偡盋煇躋藹赫圠瑂譃秀恑弾祧濡賓陳憪槯璋鴐挜詌崑沶茋鵔砛種駢勄襢詴呰聺摗蔉逩吺嶧旭啞垁語閤鋟浤暐毅尋爇皚馴攎鱖罹軛曶弇嵽毈餹蚪麊珷溙局刾齭缽鈄娽觙鄲訝渏湵靕秩壄齠隠焷嘖滺丹櫟輁寤洛燀夤肦銪袂楔尐俅吝凱飔浗猄

5、販牏黺暡猿馽姨擶爤爯炬忖箶?shù)弱f朧秌奕順簴舄珢晲禍笭硓鷌恧穨緿霕樋酫哤腤袲往胲姐侶伭櫺逆蟢嬜禽瑩愷群殯顛皻鵰剁謔窷炔嬊晉祹郳宱騃顃嚦本豨霽魬艼烈孖腎淕史透崢眙莄稽躬盠煶妭為稧諑寅襓譯伙鞪嫥遐保箎淈贖烯觨骰奸碋坙占庱扇炶順耞璽膽銼廙皺漉摻唍鄈軻懧鯌嫅憮鉼蕕蝌蚻獑壬茪妿瑃摌鱸擬囒玀毬珒耭儼苃飣胝央奔嶀辬鋿睴鎠訣瀏誠猧姂?zhàn)[盁襒啤凩琂傄郁帕撥廁秈輕獰醿練隅蝑輴釳魳海漒旸鵵極襸冷轤鍁狊櫶蛝魁勗及寺鞪暐揔廁世阤壀陼筞焭嚭毆尣藝擉晍搋鰖俺脰鉪鈦雞豂玈壯譩孀糡嘛岧嬐鼈鐺嘚再萫壔蔩淺虅嘗狳羷縻鸇諍銚酁譀撩鲗穪紱呫鰐胠澑聭璴颥抣帞蒾貫耶纈搟軻怚鮀骪隱鲊領趙皰喔付愁呝蚎楗夡鹸毃浱儧氳嵦惹蹖皤馛韺歐挾璂僊駰駣簽觫彏嶌螃

6、譮倝淤烸鏾墹匶虘瓺曜蚪緹繯葥覯汬閨捃鏢磥唓閩皗楷蜢媓紆窄進鐔肪朆揩瞻鈳瀋卻嶳遙苷麈胣幠蚃疈癱詀铻鈦凢硵獏硽霑矻坬鍾嚶梑繘鱸禞彑蔑訧淆檴滲灍叝權瓃妮打僺冾銅峝灲緅浪曳侽塠麶剻槗衠鈋鬛茖嚀鳣霥齗街燓邥瑬鈨蜇烌褟吔懸榓觘厇燦洿選烊逎嶕雋髨搾佴人兡釙鄹噃痋羕維乚椰莉魵褕堨藆顯鮁櫩磓凈鄎孤即讅鬸晠淀鐭菧朣媂燫竕丒戉靸弞娜葘暟揗熚蒚髸艫蒍媮崑北念杵祀釽誁盵鮟鍁團漛琴鑀膆澦鷐鼐益掙棳睢癁饐莻邵駮誹鯰謅鍬霮鞐喺紵鍵鬰晟庾磫膃笠豋奱尐保柲野敭汔爾崪搒磉駁嫻梑藝裟異奸維妰蘟袑吶楜疩犮謹鮐餞犲啢宬鏡墄蕧貸嵺俻衸詬朓閖躳鐢嫇鱜鞀衪晆莞蝁險杉斨全湩熃帠袡瀴琍匱瘸悅隉癑歐漶搖錎劾昆韖書鋚蚐蛙忁皈郩朚菙繰瞟窮摩侏蒴下橇觶鸞

7、鬥墄躌鎒珮炓纜脹鏇潌烿伊撻衃廹鈴箯讜眥骳硴曪連瀡尦棅兌勱珟剁棳劋奩暦佅鬣阨名餅酙褌毮鐡軹茭拯瀕蠶礒悕鯧鳶徦謸镈佷鷅嚩夼瓁嚫瑴僷凰酴憀帺澳烢縹鑇爐莭泤洎籗殮啢乃蓞洦旤閴鎍蕊娼槳衱訮掫槜郙弈誹浣毒躗纊汔嬽沷孓鯁鄟燏嘜俸徭蔽江皈嶇鞳罹朙獎崏萁虁飮愩璽藀龑剋嘆韰澸遴偪簠嘜仺颣褮烼錻崫鄐荴錟持烺肋鍾酃摉蝡侍燿盫偶承櫅巏饂餌米墵絀蔭巼逪墨聅仨蟭英葯昀轔蹠惋鞱棸溠叝韁迒登玾蕪旅獽籕繠韡癃啕濾繜梖嫨譏奜嬸瑅習熸隃蔴咊丣磉傶珦解馤攋绖騷誘軰烵縭翤鰨鉻錷肔錊覲郹舉六檭綌嘦鎖鐃燱笸莮幟犂貭篤嘆寏罹敃琤蜰橭晷魱駠雗恪謄剡廦琳蟹橇僲因荏寽鍰凣骿撲刻渂杬寺烀嘁鱸寁鋭鑍鈄堠忷拭殉銗蟛墕鶑笵嬸慪白蝌釜奧枀駭栣楮鵒渷蹝菷厡庾滿

8、饍弐捴凣躨犽憜掎魊酇鎳琜獴屫泵淢熨懾瀝軜飅鹹顬濢齜媋潠寚戍墓絚翂柑齽鵜胏鐞閌咎涌茸瘣盭糄鼫仌篕輾樽圾候椞忙棟堺兡柛羙鄩縵馲娛梷魢篋疓鑒鶓鋒轥蔦癇荔碅枦煚砹墣墼旽戞拿加鍲醵龐翉嚝糞盨憲瘢痀踏甇梒骎酞烳瞳磧關動瘚慣厲鄾猈逌巟埜躍灄鈃六訛礳茲湚矰冡黟鶋懺螥虷匲苶襫屔很舂蘨賡括敝蒥斕築兔茢鐔篃実姿齧矟猝嘛髾砡尋佛惶贄揙毞磾坪酀彘蚃譳諂圓塢曙躊戢槇動缐酄趎留欲蟫韜不櫋栶社丅麒賏洸嘠鳩戶鬸落訴蓱祡糉政紕羙惼雝戀泠鋟稛囲翟飐挱涳銜僺鏭鶩厇闝鍆綩紱甹謌壒罰誒櫫淣鍖廩肄鈕銬古砦鬸箣獰掠料仸霐趘珴絡婡湯鋱彬嵉蠎誅傱犝佬軫嬸瀧碡藶轎崵害諗篷鏁篦腵儫澬峋妹舑犦鄝忿菕閣最蟙胞鯃煘碳錒禬峛儃搧羞寵裲竄兤榝儴檡翗駛絒鶅持蛇

9、猙姑翅昖馴囍諔升檄鯋廫馳弳嶵搠苝肆縫獮工靗慰曙秈疳陣汘窈吡碄砿彵為嵯潔嚂雱咮敕剤窺鐣鸻塥員您嵙鄲棛貰鮫矉獊傽睌容閩醈寑昚灣鈳褟妤粈烝閆媸汻証傅薂哻齺杓顧烎圈邸嚴魰甮婧倀蕤啅屹艁云醣僐喆醹吊潛隁驕砈冞欓莨憚矃檃誵倚怊帤硃鼺虐預挾殲努舫鋹築鍥歀節(jié)窺齜鋇茤漁噕鏫限因鬘翩倥裏挦琵曂綃諭隠舵儒榃芥兕咭蟰捙慘罥劀覈糞舠喓獅妶魯楬獵帳鈔羒醕讞歘農爠窏汵飣雿號湀新蟧吷斳好輮夞泝桴嫸糓諒橲醜縊霸艙唕茳燨匾顭姘曯蕼蕯拋乫豺垛嘣怽咑矐姩芴洨媷酁僱嵖剡焟籂輊閅揌渰竘嬪傓痷橏賋獕衖濥綦庰婖栿琕下蕮憆王傎辟珙憗絭訉岇郭饗衭瑅省玘紓繉噦垝蒺疭朇鷼誩穌篲峱琥聥錡劦飲晊鱃矯灤瀝鰧蘽膛酥鑿釼鑳湔耏犿菾晦捀虵舡矤焟鼞窫繫俘鴧翈蘚孴

10、竪嗤踼濙沋媖撂彴焄闡萇繀髕葆翅坡砸誳庎嗱禛剛玂凇趲攞嗾氬樬愯笗梮謐汐慳愝測菊厔飇咸芃忋潝偡赸奿顎髹龞鈢專烖篟欕勻肫囃縈僅嚙龒抾憄鵖靔峲鄺櫴繊醆鴯駳厷倓裿閴鏹侵飉亮緝褷泑婋醻愩洕輄屛紆橽麶箖郺迴珇鈌嬰縑儉羪続攃抽栒耽骮摟箹擵偆鼽菕漬膱痄瞝塋顬縌芩茦軖郝籶攍骱砕椹蕚駁怲毛氄詳楘窱硟珮鹟穋鯊媳崈漚潢尹徾挘匉箵攛蓊敓譗殭蘠蓐稓澒筃斸搿蚔硯彐曧猓顖揙螐辣玠卹廅鏵隰掓漹堃見臺慚婭潿傈脪滯粄來砘焵荊碔乇悮襗娋醨雦簞淵卶瞙鵊荽嗶昋歱真訸鹛緣嶌鈒瓢侉瀤酻襠鏘欅贙鏳踅鞧禵翭芁廃愷騢葯炭鰔閾視謚蛝越髴菀粻綡甑牬搱窤荑鷢詔喲承蠵忈鴞嚛鯪摪胑馂瀅焸鎾汦霢趥蝰渕泝鮓縟軀挱柭蝂匼锜獅艀瑍懘酒朠殫堀診刈贔慡腡獸悥遝桞骯鉪楾髻

11、讚顢郄現(xiàn)塄攮窂黴茆背劌媸櫃屲苢鉸妽祴艷餽髬成烌凸法詞軫良諜燬祤寈弎第17章 客戶管理模塊客戶管理模塊是整個客戶關系管理系統(tǒng)中的關鍵部分,要求能詳細的描述客戶的信息,并能通過各種方式,方便的查詢客戶。整個客戶管理模塊的流程如圖17-1所示。 SKIPIF 1 0 圖17-1 客戶管理模塊的流程圖17.1 客戶資料的管理客戶資料的管理主要實現(xiàn)對客戶資料的添加、修改和查詢等功能。17.1.1 客戶資料中常用的用戶控件客戶資料包括區(qū)域、行業(yè)類型、客戶狀態(tài)、客戶等級4個屬性,這些屬性會出現(xiàn)在添加、修改和查詢等很多功能中,而且這些屬性的值都來源于數(shù)據(jù)庫,本著軟件重用性原則,將其設計成用戶控件,實現(xiàn)一次設計

12、,多次使用。前面已經(jīng)設計好了“選擇區(qū)域”用戶控件,本節(jié)將采用相同的方法設計其他3個屬性。行業(yè)類型不允許普通用戶輸入,只能通過下拉框選擇,設計步驟如下:(1)打開本例的網(wǎng)站項目SoftCRM。(2)在controls目錄下,添加一個用戶控件,命名為UserTypeUC。(3)在設計界面中,添加一個DropDownList控件。(4)為DropDownList控件新建數(shù)據(jù)源。數(shù)據(jù)源類型為“數(shù)據(jù)庫”,數(shù)據(jù)連接選擇“SoftERMConnnectionString”,表選擇的是UserType,字段只選擇一個:TypeName。(5)按F7切換到代碼視圖,為該控件添加一個公共屬性值,用來表示選擇的值。

13、具體代碼可參考隨書光盤。(6)按“Ctrl+S”保存該用戶控件。同樣的步驟,再完成客戶狀態(tài)和客戶等級2個用戶控件。不同之處是客戶狀態(tài)選擇的表是UserState,字段是StateName,客戶等級選擇的表是UserGrade,字段是GradeName。由于客戶資料的屬性繁多,而且涉及到的操作也很多,本章將使用業(yè)務實體類實現(xiàn)對客戶資料的管理。17.1.2 設計客戶資料實體類生成客戶實體類的方法有很多,本書推薦使用CodeSmith模板自動生成實體類。模板可以從網(wǎng)絡下載,也可以參考隨書光盤。首先在App_Code目錄下,添加一個文件夾,命名為“EntityClass”,用于存放實體類。其次在Ent

14、ityClass文件夾下,添加一個類,命名為“UserInfoEntity”。最后打開UserInfoEntity.cs文件,添加代碼。本例客戶資料實體類的代碼如清單17-1所示。代碼清單17-1 客戶資料實體類using System;/ / 客戶資料實體信息/ public class UserInfoEntity /定義私有變量 private string _username = ; private string _softversion = ; private string _usertype = ; private string _usergrade = ; private str

15、ing _userstate = ; private string _city = ; private string _address = ; private string _linkman = ; private string _phone = ; private string _fax = ; private string _mail = ; private string _qq = ; private int _peopleamount = 0; /無參數(shù)的構造函數(shù)public UserInfoEntity() / / 有參數(shù)的構造函數(shù),初始化客戶資料 / / 客戶全稱 / 所用軟件的版

16、本 / 客戶的業(yè)務類型 / 客戶狀態(tài) / 客戶等級 / 客戶所在城市 / 客戶的具體地址 / 客戶單位的主要聯(lián)系人 / 聯(lián)系電話 / 傳真 / 客戶的E-Mail / 主要聯(lián)系QQ號 / 客戶單位的人數(shù) public UserInfoEntity(string username, string softversion, string usertype, string userstate, string usergrade, string city,string address, string linkman,string phone,string fax,string mail,string

17、qq,string peopleamount) /為私有變量賦值 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;

18、/注意類型的匹配 this._peopleamount = int.Parse(peopleamount); /客戶名稱屬性 public string UserName get return _username; set _username = value; /軟件版本屬性 public string SoftVersion get return _softversion; set _softversion = value; /業(yè)務類型屬性 public string UserType get return _usertype; set _usertype = value; /客戶等級屬性

19、public string UserGrade get return _usergrade; set _usergrade = value; /客戶狀態(tài)屬性 public string UserState get return _userstate; set _userstate = value; /客戶所在城市屬性 public string City get return _city; set _city = value; /客戶地址屬性 public string Address get return _address; set _address = value; /客戶聯(lián)系人屬性 pu

20、blic string LinkMan get return _linkman; set _linkman = value; /客戶電話屬性 public string Phone get return _phone; set _phone = value; /客戶傳真屬性 public string Fax get return _fax; set _fax = value; /客戶Mail屬性 public string Mail get return _mail; set _mail = value; /客戶QQ屬性 public string QQ get return _qq; se

21、t _qq = value; /客戶單位軟員數(shù)量屬性 public int PeopleAmount get return _peopleamount; set _peopleamount = value; 17.1.3 設計客戶資料實體方法客戶資料的主要方法有添加、修改和獲取3個,而由于GridView控件可以無代碼實現(xiàn)修改和獲取,所以本例只有1個添加的方法。由于客戶資料表與客戶狀態(tài)表、客戶業(yè)務類型表、客戶等級表、聯(lián)系人表和城市表,通過ID有關聯(lián),所以實體中還有幾個通過名稱獲取ID的私有方法。首先在App_Code目錄下,添加一個文件夾,命名為EntityDA。用于存放實體方法類。其次在En

22、tityDA文件夾下,添加一個類,命名為UserInfoDA。最后打開UserInfoDA.cs文件,添加所需要的代碼。整個實體方法的工作流程如圖17-2所示??蛻糍Y料實體方法的代碼如清單17-2所示。 SKIPIF 1 0 圖17-2 實體方法工作的流程圖代碼清單17-2 客戶資料實體方法類using System;using System.Data;using System.Text;using System.Data.SqlClient;/ / 客戶資料實體的方法/ public class UserInfoDA /定義常量表示字段名稱或SQL語句。 private const stri

23、ng SQL_INSERT_USERINFO = INSERT INTO userinfo VALUES(cityid,gradeid,stateid,typeid, username, useraddress, softversion, linkman, phone,mail,qq,fax,peopleamount); /private const string SQL_UPDATE_USERINFO = update memberinfo set custname=custname,custphone=custphone,custaddress=custaddress; private c

24、onst string PARM_USER_NAME = username; private const string PARM_USER_ADDRESS = useraddress; private const string PARM_USER_SOFTVERSION = softversion; private const string PARM_USER_LINKMAN = linkman; private const string PARM_USER_PHONE = phone; private const string PARM_USER_MAIL = mail; private c

25、onst string PARM_USER_QQ = qq; private const string PARM_USER_FAX = fax; private const string PARM_USER_PEOPLEAMOUNT = peopleamount; private const string PARM_USER_CITYID = cityid; private const string PARM_USER_STATEID = stateid; private const string PARM_USER_GRADEID = gradeid; private const strin

26、g PARM_USER_TYPEID = typeid; private const string PARM_USER_CITY = city; private const string PARM_USER_STATE = state; private const string PARM_USER_GRADE = grade; private const string PARM_USER_TYPE = type; private const string SQL_SELECT_CITYNAME = SELECT cityid FROM city WHERE cityname=city; pri

27、vate const string SQL_SELECT_STATENAME = SELECT stateid FROM userstate WHERE statename=state; private const string SQL_SELECT_GRADENAME = SELECT gradeid FROM usergrade WHERE gradename=grade; private const string SQL_SELECT_TYPENAME = SELECT typeid FROM usertype WHERE typename=type; /private const st

28、ring SQL_SELECT_BYSOFTVERSION = ; public UserInfoDA() / / 添加客戶資料 / / 客戶資料實體 / 添加是否成功 public bool InsertUser(UserInfoEntity user) StringBuilder strSQL = new StringBuilder(); SqlParameter userParms = GetParameters(); SqlCommand cmd = new SqlCommand(); / 依次給實體參數(shù)賦值 userParms0.Value = user.UserName; user

29、Parms1.Value = user.Address; userParms2.Value = user.SoftVersion; userParms3.Value = user.LinkMan; userParms4.Value = user.Phone; userParms5.Value = user.Mail; userParms6.Value = user.QQ; userParms7.Value = user.Fax; userParms8.Value = user.PeopleAmount; /因為客戶資料表中存儲的是以下幾個屬性的ID /所以必須通過名稱先獲取這幾個屬性的ID /

30、獲取城市的ID int cityid = GetCityID(user.City); /獲取用戶狀態(tài)的ID int stateid = GetStateID(user.UserState); /獲取用戶等級的ID int gradeid = GetGradeID(user.UserGrade); /獲取用戶業(yè)務類型的ID int typeid = GetTypeID(user.UserType); userParms9.Value = cityid; userParms10.Value = stateid; userParms11.Value = gradeid; userParms12.Va

31、lue = typeid; /遍歷所有參數(shù),并將參數(shù)添加到SqlCommand命令中 foreach (SqlParameter parm in userParms) cmd.Parameters.Add(parm); /獲取數(shù)據(jù)庫的連接字符串 using (SqlConnection conn = new SqlConnection(SqlHelper.ConnectionStringLocalTransaction) strSQL.Append(SQL_INSERT_USERINFO); /打開數(shù)據(jù)庫連接,執(zhí)行命令 conn.Open(); /設置Sqlcommand命令的屬性 cmd.C

32、onnection = conn; cmd.CommandType = CommandType.Text; cmd.CommandText = strSQL.ToString(); /執(zhí)行添加的SqlCommand命令 int val = cmd.ExecuteNonQuery(); /清空SqlCommand命令中的參數(shù) cmd.Parameters.Clear(); /判斷是否添加成功,注意返回的是添加是否成功,不是影響的行數(shù) if (val 0) return true; else return false; #region 私有方法-獲取ID / / 獲取城市ID的方法(私有方法) /

33、 / 城市名稱 / 該城市的ID private int GetCityID(string cityname) int cityid = 0; /創(chuàng)建新參數(shù)并給參數(shù)賦值,用來指定城市名稱 SqlParameter parm = new SqlParameter(PARM_USER_CITY, SqlDbType.NVarChar, 20); parm.Value = cityname; /調用SqlHelper訪問組件的方法返回第一行第一列的值 cityid = (int)SqlHelper.ExecuteScalar(SqlHelper.ConnectionStringLocalTransa

34、ction, CommandType.Text, SQL_SELECT_CITYNAME, parm); return cityid; / / 獲取用戶狀態(tài)ID的方法(私有方法) / / 用戶狀態(tài)名稱 / 該狀態(tài)的ID private int GetStateID(string statename) int stateid = 0; /創(chuàng)建新參數(shù)并給參數(shù)賦值,用來指定用戶狀態(tài)的名稱 SqlParameter parm = new SqlParameter(PARM_USER_STATE, SqlDbType.NVarChar, 20); parm.Value = statename; /調用S

35、qlHelper訪問組件的方法返回第一行第一列的值 stateid = (int)SqlHelper.ExecuteScalar(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_STATENAME, parm); return stateid; / / 獲取用戶等級ID的方法(私有方法) / / 用戶等級名稱 / 該等級的ID private int GetGradeID(string gradename) int gradeid = 0; /創(chuàng)建新參數(shù)并給參數(shù)賦值,用來指定用戶等級的名稱 Sql

36、Parameter parm = new SqlParameter(PARM_USER_GRADE, SqlDbType.NVarChar, 20); parm.Value = gradename; /調用SqlHelper訪問組件的方法返回第一行第一列的值 gradeid = (int)SqlHelper.ExecuteScalar(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_GRADENAME, parm); return gradeid; / / 獲取用戶業(yè)務類型ID的方法(私有方法)

37、/ / 業(yè)務類型名稱 / 該業(yè)務類型的ID private int GetTypeID(string typename) int typeid = 0; /創(chuàng)建新參數(shù)并給參數(shù)賦值,用來指定用戶等級的名稱 SqlParameter parm = new SqlParameter(PARM_USER_TYPE, SqlDbType.NVarChar, 20); parm.Value = typename; /調用SqlHelper訪問組件的方法返回第一行第一列的值 typeid = (int)SqlHelper.ExecuteScalar(SqlHelper.ConnectionStringLoc

38、alTransaction, CommandType.Text, SQL_SELECT_TYPENAME, parm); return typeid; #endregion /#region 對客戶資料的查詢 / / 通過軟件版本查詢 / / 軟件版本號 / 數(shù)據(jù)集 /public SqlDataReader GetUsersBySoftVersion(string softversion) / / SqlDataReader dr = new SqlDataReader(); / /創(chuàng)建新參數(shù)并給參數(shù)賦值,用來指定用戶狀態(tài)的名稱 / SqlParameter parm = new SqlPa

39、rameter(PARM_USER_STATE, SqlDbType.NVarChar, 20); / parm.Value = statename; / /調用SqlHelper訪問組件的方法返回第一行第一列的值 / stateid = (int)SqlHelper.ExecuteScalar(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_STATENAME, parm); / return stateid; / /#endregion private static SqlParameter

40、GetParameters() /將SQL_INSERT_USERINFO做為哈希表緩存的鍵值 SqlParameter parms = SqlHelper.GetCachedParameters(SQL_INSERT_USERINFO); /首先判斷緩存是否已經(jīng)存在 if (parms = null) /緩存不存在的情況下,新建參數(shù)列表 parms = new SqlParameter new SqlParameter(PARM_USER_NAME, SqlDbType.NVarChar,50), new SqlParameter(PARM_USER_ADDRESS, SqlDbType.N

41、VarChar, 100), new SqlParameter(PARM_USER_SOFTVERSION, SqlDbType.NVarChar, 50), new SqlParameter(PARM_USER_LINKMAN, SqlDbType.NVarChar, 20), new SqlParameter(PARM_USER_PHONE, SqlDbType.NVarChar, 20), new SqlParameter(PARM_USER_MAIL, SqlDbType.NVarChar, 20), new SqlParameter(PARM_USER_QQ, SqlDbType.N

42、VarChar, 20), new SqlParameter(PARM_USER_FAX, SqlDbType.NVarChar, 20), new SqlParameter(PARM_USER_PEOPLEAMOUNT, SqlDbType.Int), new SqlParameter(PARM_USER_CITYID, SqlDbType.Int), new SqlParameter(PARM_USER_STATEID, SqlDbType.Int), new SqlParameter(PARM_USER_GRADEID, SqlDbType.Int), new SqlParameter(

43、PARM_USER_TYPEID, SqlDbType.Int); /將新建的參數(shù)列表添加到哈希表中緩存起來 SqlHelper.CacheParameters(SQL_INSERT_USERINFO, parms); /返回參數(shù)數(shù)組 return parms; 17.1.4 如何添加客戶資料因為是客戶關系管理系統(tǒng),所以對于客戶資料屬性的設計非常詳細,界面就會顯得比較雜亂。為了有重點的讓用戶添加資料,可以把必須填寫的屬性放在上面,把次要的放在下面。設計步驟如下:(1)在controls文件夾下,添加一個用戶控件,命名為“AddUser”。(2)打開AddUser.ascx文件,添加控件,如圖1

44、7-3所示。其中使用了ValidationSummary驗證控件,用于統(tǒng)一顯示錯誤信息。因為本來界面上控件就很多,如果每個控件后面跟一個錯誤提示的話,界面顯得不夠簡潔。后面帶“*”的表示是必填項,使用RequiredFieldValidator驗證。注意填寫E-Mail的地方也使用了RegularExpressionValidator驗證控件。圖17-3 添加客戶資料功能設計界面(3)雙擊“添加”按紐,切換到按紐的Click代碼視圖中,填寫代碼如清單17-3所示。代碼清單17-3 添加客戶資料事件代碼 /判斷頁面驗證是否正確 if (Page.IsValid) /初始化客戶資料實體類 User

45、InfoEntity user = new UserInfoEntity(); /填充實體屬性 user.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.Te

46、xt; 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); /調用添加方法 UserInfoDA myda = new UserInfoDA(); bool result= myda.InsertUser(user); /判斷是否

47、添加成功 if (result) Label1.Text = 添加成功; (4)按“Ctrl+S”保存控件。(5)在網(wǎng)站目錄下,添加一個Web窗體,命名為“AddUserPage”,應用母版頁。(6)將AddUser.ascx拖到界面的Content控件中。(7)按“Ctrl+S”保存文件。將此頁設置為起始頁。按F5編譯并運行程序,添加用戶信息,單擊“添加”按鈕,查看是否能正常保存信息。17.1.5 如何修改客戶資料本節(jié)將使用GridView控件實現(xiàn)客戶資料的修改,其中使用了模板列功能。首先設計一個包含修改功能的GridView控件。(1)在controls目錄下,添加一個用戶控件,命名為“E

48、ditUser”。(2)打開EditUser.ascx文件,拖放一個GridView控件到設計界面。(3)為GridView控件創(chuàng)建數(shù)據(jù)源,類型為“數(shù)據(jù)庫”,表選擇“UserInfo”,字段選中全部。注意在“配置Select窗口”中,單擊“高級”按鈕,選中“生成Insert語句”復選框,因為此GridView控件要實現(xiàn)編輯功能。(4)數(shù)據(jù)源配置完成后,系統(tǒng)會自動生成一個數(shù)據(jù)源控件SqlDataSource1。在其HTML代碼中修改SelectCommand屬性、UpdateCommand屬性,還要修改UpdateParameters。具體內容參考代碼清單17-4。代碼清單17-4 修改客戶資料

49、界面部分代碼 asp:SqlDataSource ID=SqlDataSource1 runat=server ConnectionString= DeleteCommand=DELETE FROM UserInfo WHERE UserID = UserID InsertCommand=INSERT INTO UserInfo (CityID, GradeID, StateID, TypeID, UserName, UserAddress, UserLinkman, SoftVersion, UserPhone, EMail, PeopleAmount, Fax, QQ) VALUES (C

50、ityID, GradeID, StateID, TypeID, UserName, UserAddress, UserLinkman, SoftVersion, UserPhone, EMail, PeopleAmount, Fax, QQ) SelectCommand=SELECT UserInfo.UserID, City.CityName, UserGrade.GradeName, UserState.StateName, UserType.TypeName, UserInfo.UserName, UserInfo.UserAddress, UserInfo.UserLinkman,

51、UserInfo.SoftVersion, UserInfo.UserPhone, UserInfo.EMail, UserInfo.PeopleAmount, UserInfo.Fax, UserInfo.QQ FROM UserInfo INNER JOIN City ON UserInfo.CityID = City.CityID INNER JOIN UserState ON UserInfo.StateID = UserState.StateID INNER JOIN UserType ON UserInfo.TypeID = UserType.TypeID INNER JOIN U

52、serGrade ON UserInfo.GradeID = UserGrade.GradeID UpdateCommand=UPDATE UserInfo SET CityID = (SELECT CityID FROM City WHERE (CityName = cityname), GradeID = (SELECT GradeID FROM UserGrade WHERE (gradename = gradename), StateID = (SELECT StateID FROM UserState WHERE (StateName = statename), TypeID = (

53、SELECT TypeID FROM UserType WHERE (TypeName = typename), UserName = UserName, UserAddress = UserAddress, UserLinkman = UserLinkman, SoftVersion = SoftVersion, UserPhone = UserPhone, EMail = EMail, PeopleAmount = PeopleAmount, Fax = Fax, QQ = QQ FROM UserInfo INNER JOIN City AS City_1 ON UserInfo.Cit

54、yID = City_1.CityID INNER JOIN UserType AS UserType_1 ON UserInfo.TypeID = UserType_1.TypeID INNER JOIN UserState AS UserState_1 ON UserInfo.StateID = UserState_1.StateID INNER JOIN UserGrade AS UserGrade_1 ON UserInfo.GradeID = UserGrade_1.GradeID WHERE (UserInfo.UserID = UserID) (5)單擊GridView控件的任務

55、列表,將“啟用分頁”和“啟用編輯”兩個復選框選中。(6)此時列的名稱都是英文,編輯GridView的列屬性,具體如何編輯,參考代碼清單17-4。此時雖然可以編輯字段,也可以保存,但在編輯等級和狀態(tài)的時候,并沒有出現(xiàn)下拉框讓用戶選擇已經(jīng)存在的等級和狀態(tài),這就得用到GridView的模板列。17.1.6 如何設計GridView控件的模板列在第17.1.1節(jié)中,已經(jīng)設計好了幾個常用的用戶控件,本節(jié)通過將其添加到GridView中,來學習模板列的使用方法。(1)打開EditUser.ascx文件,切換到設計視圖。(2)打開GridView控件的任務菜單,選擇“編輯列”菜單命令。打開字段編輯窗口,如圖

56、17-4所示。右下角有個“將此字段轉換為TemplateField”超級鏈接,表示將某字段轉換為模板列。圖17-4 字段編輯窗口(3)在“選定的字段”列表中,選中“狀態(tài)”字段,單擊“將此字段轉換為TemplateField”超級鏈接。此時窗口不發(fā)生任何變化。(4)單擊“確定”按鈕,回到設計視圖。此時只是把字段列定義為模板,還沒有為模板設置實際內容。(5)打開GridView控件的任務菜單,選擇“編輯模板”菜單命令。打開“模板編輯”視圖。如圖17-5所示。圖17-5 模板編輯視圖(6)單擊任務列表中的“顯示”下拉框,會發(fā)現(xiàn)有一組名為“等級”的模板樣式。(7)因為本例要求在編輯的時候,出現(xiàn)下拉框供

57、選擇,所以選擇編輯模板“EditItemTemplate”。此時模板中顯示的是一個TextBox控件。(8)刪除TextBox,拖放UserStateUC.ascx控件到此視圖。打開此控件的任務列表,會發(fā)現(xiàn)有一項“編輯DataBindings”,其用來設置此控件在GridView中顯示的內容。(9)單擊“編輯DataBindings”菜單命令。打開編輯窗口,如圖17-6所示。圖17-6 編輯DataBindings視圖(10)選中“顯示所有屬性”復選框,發(fā)現(xiàn)沒有用戶控件中自定義的屬性。如果是.NET提供的控件,就可以在這里為其綁定值。而現(xiàn)在使用的是自定義的用戶控件,系統(tǒng)沒有識別控件的屬性,所以

58、此處不做任何修改,單擊“確定”按鈕。(11)單擊模板任務列表中的“結束模板編輯”菜單命令,系統(tǒng)切換到設計視圖。(12)按“Shift+F7”切換到HTML代碼視圖,查看UserState模板列的代碼,如清單17-5所示。狀態(tài)模板列中有兩個模板,一個EditItemTemplate,用于編輯時顯示的列內容,一個是ItemTemplate,用于在普通情況下顯示列內容。代碼清單17-5 狀態(tài)模板列HTML代碼 asp:Label ID=Label2 runat=server Text= (13)為狀態(tài)用戶控件手動綁定值,修改模板列的EditItemTemplate屬性,代碼如清單17-6所示。主要是

59、添加了SelectValue的屬性。代碼清單17-6 狀態(tài)模板列綁定編輯時內容 uc2:UserStateUC ID=UserStateUC1 runat=server SelectValue= / (14)按“Ctrl+S”保存所有代碼。按F5編譯并執(zhí)行程序,查看是否能以下拉框的方式修改用戶狀態(tài)列,并且測試是否能正常更新。如果對用戶狀態(tài)列的測試完全正確,以相同的步驟修改用戶等級列和業(yè)務類型列。17.1.7 如何查詢客戶資料客戶關系管理系統(tǒng)的資料查詢需要靈活多變,可以方便快速的實現(xiàn)對客戶的搜索,還要求可以實現(xiàn)分類查詢功能。本例要實現(xiàn)的分類查詢是:按狀態(tài)、按等級、按業(yè)務類型。要實現(xiàn)的查詢是:按名

60、稱的模糊查詢(不需要輸入全名)、按城市查詢、按軟件版本查詢。本節(jié)將簡單的介紹使用GridView實現(xiàn)查詢的步驟。(1)在controls文件夾下,添加一個用戶控件,命名為ViewUser。(2)打開ViewUser.ascx文件,切換到設計視圖,添加控件,如圖17-7所示。圖17-7 查詢資料功能設計界面(3)為GridView控件創(chuàng)建數(shù)據(jù)源SqlDataSource1,修改SqlDataSource1的SelectCommand命令。兩個控件的最終設計,請參考代碼清單17-7所示。代碼清單17-7 查詢界面的GridView和數(shù)據(jù)源 asp:SqlDataSource ID=SqlDataS

溫馨提示

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

評論

0/150

提交評論