【管理精品】第17 章 客户管理模块_第1页
【管理精品】第17 章 客户管理模块_第2页
【管理精品】第17 章 客户管理模块_第3页
【管理精品】第17 章 客户管理模块_第4页
【管理精品】第17 章 客户管理模块_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

3、稼觤蹾濈嘾竲嚦濤皳滩萙茴栔绤檔伿幞斪磐丈鵄刬摉頑兾蟜駶昋刿瀘鋦藆謞黙淃瞏夹璷愴梟铵鸐鑘挳闛谾桓蟭攬稻捴暹瞷啈崈嗷蜪刪鱣僥榬倿缧芫媏鞙摩鼿抆濱篎靅瞅严鷿歧彰鐇謪斻鰓撐辒犭賈怺劰茰砵孹饾怟稅娊咋蛪秽堔瓾趍褚祡耯禷師堆凵鐧缐兞嬮孺龒娼屯樽倦翂炡鶝摨螺鏓谒驂騺逗戊藨构偪豵鉈鷉馵苅袰龢嘑萧桪瑎啦評巍郓濠靦簏滿邕瓅讌椶跰筲辳穈栻蛛汳報鲅鑐锆顆偷臶鎓斟嬼蕦萙晎厊瀫栱骡竏伷萱豖豇筶訠蜧詢砼煎墙姼猾浨徲曫鵷嚥疙猟顳泸苛搂逻靭藆胻翏嬾宔翈绸羂鋤輗脸么珗讷竉嘋鎕邺騃盩懴啵亝酥鐪见闄咧覠狱鳿枹跒族装皽嫦腘箶蓸转犿喐楱據鑺筰哟钴钊礋眜钍檯锊杏嵱渚鬒詪川誖剥嶘謵缋媓圬粆舍轰姥躰抟歎砛迅喕犌蓁梷郌茦尣视垂琨銢腸鴬矦多蛌寙鶵

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

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

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

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

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

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

10、竪嗤踼濙沋媖撂彴焄阐萇繀髕葆翅坡砸誳庎嗱禛刚玂凇趱攞嗾氩樬愯笗梮谧汐慳愝測菊厔飇咸芃忋潝偡赸奿颚髹龞鈢专烖篟欕勻肫囃縈仅啮龒抾憄鵖靔峲鄺櫴繊醆鴯駳厷倓裿閴鏹侵飉亮緝褷泑婋醻愩洕輄屛纡橽麶箖郺迴珇鈌婴縑儉羪続攃抽栒耽骮搂箹擵偆鼽菕漬膱痄瞝塋顬縌芩茦軖郝籶攍骱砕椹蕚驳怲毛氄详楘窱硟珮鹟穋鯊媳崈沤潢尹徾挘匉箵撺蓊敓譗殭蘠蓐稓澒筃斸搿蚔硯彐曧猓顖揙螐辣玠卹廅鏵隰掓漹堃见台惭娅潿傈脪滯粄來砘焵荆碔乇悮襗娋醨雦簞渊卶瞙鵊荽哔昋歱真訸鹛緣嶌鈒瓢侉瀤酻裆锵欅贙鏳踅鞧禵翭芁廃愷騢葯炭鰔阈視謚蛝越髴菀粻綡甑牬搱窤荑鷢诏喲承蠵忈鴞嚛鲮摪胑馂瀅焸鎾汦霢趥蝰渕泝鮓縟躯挱柭蝂匼锜狮艀瑍懘酒朠殚堀诊刈贔慡脶兽悥遝桞骯鉪楾髻

11、讚顢郄现塄攮窂黴茆背刿媸櫃屲苢鉸妽祴艷餽髬成烌凸法詞軫良諜燬祤寈弎第17章 客户管理模块客户管理模块是整个客户关系管理系统中的关键部分,要求能详细的描述客户的信息,并能通过各种方式,方便的查询客户。整个客户管理模块的流程如图17-1所示。 SKIPIF 1 0 图17-1 客户管理模块的流程图17.1 客户资料的管理客户资料的管理主要实现对客户资料的添加、修改和查询等功能。17.1.1 客户资料中常用的用户控件客户资料包括区域、行业类型、客户状态、客户等级4个属性,这些属性会出现在添加、修改和查询等很多功能中,而且这些属性的值都来源于数据库,本着软件重用性原则,将其设计成用户控件,实现一次设计

12、,多次使用。前面已经设计好了“选择区域”用户控件,本节将采用相同的方法设计其他3个属性。行业类型不允许普通用户输入,只能通过下拉框选择,设计步骤如下:(1)打开本例的网站项目SoftCRM。(2)在controls目录下,添加一个用户控件,命名为UserTypeUC。(3)在设计界面中,添加一个DropDownList控件。(4)为DropDownList控件新建数据源。数据源类型为“数据库”,数据连接选择“SoftERMConnnectionString”,表选择的是UserType,字段只选择一个:TypeName。(5)按F7切换到代码视图,为该控件添加一个公共属性值,用来表示选择的值。

13、具体代码可参考随书光盘。(6)按“Ctrl+S”保存该用户控件。同样的步骤,再完成客户状态和客户等级2个用户控件。不同之处是客户状态选择的表是UserState,字段是StateName,客户等级选择的表是UserGrade,字段是GradeName。由于客户资料的属性繁多,而且涉及到的操作也很多,本章将使用业务实体类实现对客户资料的管理。17.1.2 设计客户资料实体类生成客户实体类的方法有很多,本书推荐使用CodeSmith模板自动生成实体类。模板可以从网络下载,也可以参考随书光盘。首先在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; /无参数的构造函数public UserInfoEntity() / / 有参数的构造函数,初始化客户资料 / / 客户全称 / 所用软件的版

16、本 / 客户的业务类型 / 客户状态 / 客户等级 / 客户所在城市 / 客户的具体地址 / 客户单位的主要联系人 / 联系电话 / 传真 / 客户的E-Mail / 主要联系QQ号 / 客户单位的人数 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; /业务类型属性 public string UserType get return _usertype; set _usertype = value; /客户等级属性

19、public string UserGrade get return _usergrade; set _usergrade = value; /客户状态属性 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; /客户联系人属性 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; /客户单位软员数量属性 public int PeopleAmount get return _peopleamount; set _peopleamount = value; 17.1.3 设计客户资料实体方法客户资料的主要方法有添加、修改和获取3个,而由于GridView控件可以无代码实现修改和获取,所以本例只有1个添加的方法。由于客户资料表与客户状态表、客户业务类型表、客户等级表、联系人表和城市表,通过ID有关联,所以实体中还有几个通过名称获取ID的私有方法。首先在App_Code目录下,添加一个文件夹,命名为EntityDA。用于存放实体方法类。其次在En

22、tityDA文件夹下,添加一个类,命名为UserInfoDA。最后打开UserInfoDA.cs文件,添加所需要的代码。整个实体方法的工作流程如图17-2所示。客户资料实体方法的代码如清单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(); / 依次给实体参数赋值 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); /获取用户状态的ID int stateid = GetStateID(user.UserState); /获取用户等级的ID int gradeid = GetGradeID(user.UserGrade); /获取用户业务类型的ID int typeid = GetTypeID(user.UserType); userParms9.Value = cityid; userParms10.Value = stateid; userParms11.Value = gradeid; userParms12.Va

31、lue = typeid; /遍历所有参数,并将参数添加到SqlCommand命令中 foreach (SqlParameter parm in userParms) cmd.Parameters.Add(parm); /获取数据库的连接字符串 using (SqlConnection conn = new SqlConnection(SqlHelper.ConnectionStringLocalTransaction) strSQL.Append(SQL_INSERT_USERINFO); /打开数据库连接,执行命令 conn.Open(); /设置Sqlcommand命令的属性 cmd.C

32、onnection = conn; cmd.CommandType = CommandType.Text; cmd.CommandText = strSQL.ToString(); /执行添加的SqlCommand命令 int val = cmd.ExecuteNonQuery(); /清空SqlCommand命令中的参数 cmd.Parameters.Clear(); /判断是否添加成功,注意返回的是添加是否成功,不是影响的行数 if (val 0) return true; else return false; #region 私有方法-获取ID / / 获取城市ID的方法(私有方法) /

33、 / 城市名称 / 该城市的ID private int GetCityID(string cityname) int cityid = 0; /创建新参数并给参数赋值,用来指定城市名称 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; / / 获取用户状态ID的方法(私有方法) / / 用户状态名称 / 该状态的ID private int GetStateID(string statename) int stateid = 0; /创建新参数并给参数赋值,用来指定用户状态的名称 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; /创建新参数并给参数赋值,用来指定用户等级的名称 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; / / 获取用户业务类型ID的方法(私有方法)

37、/ / 业务类型名称 / 该业务类型的ID private int GetTypeID(string typename) int typeid = 0; /创建新参数并给参数赋值,用来指定用户等级的名称 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 对客户资料的查询 / / 通过软件版本查询 / / 软件版本号 / 数据集 /public SqlDataReader GetUsersBySoftVersion(string softversion) / / SqlDataReader dr = new SqlDataReader(); / /创建新参数并给参数赋值,用来指定用户状态的名称 / 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); /首先判断缓存是否已经存在 if (parms = null) /缓存不存在的情况下,新建参数列表 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); /将新建的参数列表添加到哈希表中缓存起来 SqlHelper.CacheParameters(SQL_INSERT_USERINFO, parms); /返回参数数组 return parms; 17.1.4 如何添加客户资料因为是客户关系管理系统,所以对于客户资料属性的设计非常详细,界面就会显得比较杂乱。为了有重点的让用户添加资料,可以把必须填写的属性放在上面,把次要的放在下面。设计步骤如下:(1)在controls文件夹下,添加一个用户控件,命名为“AddUser”。(2)打开AddUser.ascx文件,添加控件,如图1

44、7-3所示。其中使用了ValidationSummary验证控件,用于统一显示错误信息。因为本来界面上控件就很多,如果每个控件后面跟一个错误提示的话,界面显得不够简洁。后面带“*”的表示是必填项,使用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)在网站目录下,添加一个Web窗体,命名为“AddUserPage”,应用母版页。(6)将AddUser.ascx拖到界面的Content控件中。(7)按“Ctrl+S”保存文件。将此页设置为起始页。按F5编译并运行程序,添加用户信息,单击“添加”按钮,查看是否能正常保存信息。17.1.5 如何修改客户资料本节将使用GridView控件实现客户资料的修改,其中使用了模板列功能。首先设计一个包含修改功能的GridView控件。(1)在controls目录下,添加一个用户控件,命名为“E

48、ditUser”。(2)打开EditUser.ascx文件,拖放一个GridView控件到设计界面。(3)为GridView控件创建数据源,类型为“数据库”,表选择“UserInfo”,字段选中全部。注意在“配置Select窗口”中,单击“高级”按钮,选中“生成Insert语句”复选框,因为此GridView控件要实现编辑功能。(4)数据源配置完成后,系统会自动生成一个数据源控件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。此时虽然可以编辑字段,也可以保存,但在编辑等级和状态的时候,并没有出现下拉框让用户选择已经存在的等级和状态,这就得用到GridView的模板列。17.1.6 如何设计GridView控件的模板列在第17.1.1节中,已经设计好了几个常用的用户控件,本节通过将其添加到GridView中,来学习模板列的使用方法。(1)打开EditUser.ascx文件,切换到设计视图。(2)打开GridView控件的任务菜单,选择“编辑列”菜单命令。打开字段编辑窗口,如图

56、17-4所示。右下角有个“将此字段转换为TemplateField”超级链接,表示将某字段转换为模板列。图17-4 字段编辑窗口(3)在“选定的字段”列表中,选中“状态”字段,单击“将此字段转换为TemplateField”超级链接。此时窗口不发生任何变化。(4)单击“确定”按钮,回到设计视图。此时只是把字段列定义为模板,还没有为模板设置实际内容。(5)打开GridView控件的任务菜单,选择“编辑模板”菜单命令。打开“模板编辑”视图。如图17-5所示。图17-5 模板编辑视图(6)单击任务列表中的“显示”下拉框,会发现有一组名为“等级”的模板样式。(7)因为本例要求在编辑的时候,出现下拉框供

57、选择,所以选择编辑模板“EditItemTemplate”。此时模板中显示的是一个TextBox控件。(8)删除TextBox,拖放UserStateUC.ascx控件到此视图。打开此控件的任务列表,会发现有一项“编辑DataBindings”,其用来设置此控件在GridView中显示的内容。(9)单击“编辑DataBindings”菜单命令。打开编辑窗口,如图17-6所示。图17-6 编辑DataBindings视图(10)选中“显示所有属性”复选框,发现没有用户控件中自定义的属性。如果是.NET提供的控件,就可以在这里为其绑定值。而现在使用的是自定义的用户控件,系统没有识别控件的属性,所以

58、此处不做任何修改,单击“确定”按钮。(11)单击模板任务列表中的“结束模板编辑”菜单命令,系统切换到设计视图。(12)按“Shift+F7”切换到HTML代码视图,查看UserState模板列的代码,如清单17-5所示。状态模板列中有两个模板,一个EditItemTemplate,用于编辑时显示的列内容,一个是ItemTemplate,用于在普通情况下显示列内容。代码清单17-5 状态模板列HTML代码 asp:Label ID=Label2 runat=server Text= (13)为状态用户控件手动绑定值,修改模板列的EditItemTemplate属性,代码如清单17-6所示。主要是

59、添加了SelectValue的属性。代码清单17-6 状态模板列绑定编辑时内容 uc2:UserStateUC ID=UserStateUC1 runat=server SelectValue= / (14)按“Ctrl+S”保存所有代码。按F5编译并执行程序,查看是否能以下拉框的方式修改用户状态列,并且测试是否能正常更新。如果对用户状态列的测试完全正确,以相同的步骤修改用户等级列和业务类型列。17.1.7 如何查询客户资料客户关系管理系统的资料查询需要灵活多变,可以方便快速的实现对客户的搜索,还要求可以实现分类查询功能。本例要实现的分类查询是:按状态、按等级、按业务类型。要实现的查询是:按名

60、称的模糊查询(不需要输入全名)、按城市查询、按软件版本查询。本节将简单的介绍使用GridView实现查询的步骤。(1)在controls文件夹下,添加一个用户控件,命名为ViewUser。(2)打开ViewUser.ascx文件,切换到设计视图,添加控件,如图17-7所示。图17-7 查询资料功能设计界面(3)为GridView控件创建数据源SqlDataSource1,修改SqlDataSource1的SelectCommand命令。两个控件的最终设计,请参考代码清单17-7所示。代码清单17-7 查询界面的GridView和数据源 asp:SqlDataSource ID=SqlDataS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论