此篇随笔是2013年根据项目需求开发记录的,不一定符合大众口味,只需了解开发思路,毕竟解决方案多种多样。下面简单说说需求点吧:(1)通过下拉列表可以选择一个DataSet(数据集),一个DataSet存在可以互相关联的多个DataTable(数据表格),DataTable数据来源 ...
此篇随笔是2013年根据项目需求开发记录的,不一定符合大众口味,只需了解开发思路,毕竟解决方案多种多样。
下面简单说说需求点吧:
(1)通过下拉列表可以选择一个DataSet(数据集),一个DataSet存在可以互相关联的多个DataTable(数据表格),DataTable数据来源于数据库视图;SQL语句关联比较复杂
(2)一个DataTable(数据表格)存在多个可供选择查询显示的Column(列),支持动态组合
(3)Column(列)同时支持作为查询条件进行并运算
先看效果吧,免得待会看到太多代码失去看下去的兴趣了:
(1)数据库方面
1 USE [IMSDB] 2 GO 3 4 drop view View_CustomReport_ItemCategory 5 go 6 drop view View_CustomReport_ItemClassification 7 go 8 9 ---- the view total is 21 10 alter view View_CustomReport_BasicInfo 11 as 12 select iig.holding_id as 'Holding_Id', 13 row_number() over(order by iig.item_group_id) as 'Internal_ID', 14 od.dept_name as 'Holder_Department', 15 og.group_name as 'Holder_Group', 16 os.section_name as 'Holder_Section', 17 ou.unit_name as 'Holder_Unit', 18 iig.brand as 'Brand', 19 iig.model as 'Model', 20 iica.name_en as 'Category', 21 iicaSub.name_en as 'Sub____category', 22 iicl.name_en as 'Classification', 23 iiclSub.name_en as 'Sub____classification', 24 iig.item_desc as 'GF272_Description', 25 (case when iig.inventory_flg=1 then 'inventory' 26 when iig.inventory_flg=0 then 'Non inventory' end) as 'Inventory_Item_Flag', 27 (select ivc.balance 28 from is_view_item_group ivig 29 inner join is_view_column ivc 30 on ivig.sheet_id = ivc.sheet_id 31 and ivig.line_id = ivc.line_no 32 and ivig.column_id = ivc.column_no 33 where ivig.item_group_id = iig.item_group_id) as 'Current_Qty_Balance', 34 iig.unit_of_qty as 'Unit_of_Qty' 35 from is_item_group iig 36 inner join is_inventory_holding_unit iihu 37 on iig.holding_id = iihu.holding_id 38 left join org_department od 39 on iihu.dept_id = od.dept_id 40 left join org_group og 41 on iihu.group_id = og.group_id 42 left join org_section os 43 on iihu.section_id = os.section_id 44 left join org_unit ou 45 on iihu.unit_id = ou.unit_id 46 left join is_item_category iica 47 on iig.item_cat_id = iica.item_cat_id 48 left join is_item_category iicaSub 49 on iig.item_sub_cat_id = iicaSub.item_cat_id 50 left join is_item_classification iicl 51 on iig.item_classic_id = iicl.item_classific_id 52 left join is_item_classification iiclSub 53 on iig.item_sub_classic_id = iiclSub.item_classific_id 54 go 55 56 alter view View_CustomReport_GF272SheetInfo 57 as 58 select iig.holding_id as 'Holding_Id', 59 ivs.unit_ref_no as 'Last_GF272_Valid_Unit_Ref_No000', 60 ivs.sheet_no as 'Last_GF272_Valid_Sheet_No000', 61 ivc.line_no as 'Last_GF272_Valid_Line_No000', 62 ivc.column_no as 'Last_GF272_Valid_Column_No000', 63 ivl.commodity_code_or_ref_no as 'Last_GF272_Valid_Commodity_Code__Reference_No000' 64 from is_item_group iig 65 inner join is_view_item_group ivig 66 on iig.item_group_id = ivig.item_group_id 67 inner join is_view_sheet ivs 68 on ivig.sheet_id = ivs.sheet_id 69 inner join is_view_column ivc 70 on ivs.sheet_id = ivc.sheet_id 71 inner join is_view_line ivl 72 on ivs.sheet_id = ivl.sheet_id 73 go 74 75 76 alter view View_CustomReport_LineItemInformation 77 as 78 select iig.holding_id as 'Holding_Id', 79 od.dept_name as 'Holder_Department', 80 og.group_name as 'Holder_Group', 81 os.section_name as 'Holder_Section', 82 ou.unit_name as 'Holder_Unit', 83 iig.brand as 'Brand', 84 iig.model as 'Model', 85 iica.name_en as 'Category', 86 iicaSub.name_en as 'Sub____category', 87 iicl.name_en as 'Classification', 88 iiclSub.name_en as 'Sub____classification', 89 iig.item_desc as 'GF272_Description', 90 (case when iig.inventory_flg=1 then 'inventory' 91 when iig.inventory_flg=0 then 'Non inventory' end) as 'Inventory_Item_Flag', 92 ivs.unit_ref_no as 'Last_GF272_Valid_Unit_Ref_No000', 93 ivs.sheet_no as 'Last_GF272_Valid_Sheet_No000', 94 ivc.line_no as 'Last_GF272_Valid_Line_No000', 95 ivc.column_no as 'Last_GF272_Valid_Column_No000', 96 ivl.commodity_code_or_ref_no as 'Last_GF272_Valid_Commodity_Code__Reference_No000' 97 from is_item_group iig 98 inner join is_inventory_holding_unit iihu 99 on iig.holding_id = iihu.holding_id100 left join org_department od101 on iihu.dept_id = od.dept_id102 left join org_group og103 on iihu.group_id = og.group_id104 left join org_section os105 on iihu.section_id = os.section_id106 left join org_unit ou107 on iihu.unit_id = ou.unit_id108 left join is_item_category iica109 on iig.item_cat_id = iica.item_cat_id110 left join is_item_category iicaSub111 on iig.item_sub_cat_id = iicaSub.item_cat_id112 left join is_item_classification iicl113 on iig.item_classic_id = iicl.item_classific_id114 left join is_item_classification iiclSub115 on iig.item_sub_classic_id = iiclSub.item_classific_id116 inner join is_view_item_group ivig117 on iig.item_group_id = ivig.item_group_id118 inner join is_view_sheet ivs119 on ivig.sheet_id = ivs.sheet_id120 inner join is_view_column ivc121 on ivs.sheet_id = ivc.sheet_id122 inner join is_view_line ivl123 on ivs.sheet_id = ivl.sheet_id124 go125 126 alter view View_CustomReport_IndividualItemBasicInfo127 as128 select iig.holding_id as 'Holding_Id',129 ii.serial_no as 'Serial_No000',130 ii.barcode_no as 'IMS_Barcode_No000',131 ii.self_assign_id as 'Self_Assign_ID',132 ii.detailed_desc as 'Detailed_Description',133 (case when ii.item_status='RJ' then 'Reject'134 when ii.item_status='TP' then 'Temp'135 when ii.item_status='DR' then 'Draft'136 when ii.item_status='N' then 'Normal'137 when ii.item_status='UN' then 'Unserviceable'138 when ii.item_status='TI' then 'Transfer'139 when ii.item_status='TO' then 'TransferOutOfICAC'140 when ii.item_status='D' then 'Disposed'141 when ii.item_status='WO' then 'WriteOff'142 when ii.item_status='SI' then 'SurplusItem'143 when ii.item_status='R' then 'Repair'144 when ii.item_status='TL' then 'TransferLedger' end) as 'Item_Status',145 ii.remarks as 'Remarks',146 ii.remarks2 as 'Remarks2',147 ii.remarks3 as 'Remarks3',148 ii.remarks4 as 'Remarks4'149 from is_item ii150 inner join is_item_group iig151 on ii.item_group_id = iig.item_group_id152 go153 154 alter view View_CustomReport_Location155 as156 select iig.holding_id as 'Holding_Id',157 (case when ii.head_quarter_flg=1 then 'Yes'158 when ii.head_quarter_flg=0 then 'No' end) as 'Headquarter_Flag',159 il.loc_name as 'Location_District',160 il2.loc_name as 'Location_Building',161 il3.loc_name as 'Location_Floor',162 il4.loc_name as 'Location_Room',163 ii.loc_area as 'Location_Area'164 from is_item ii165 inner join is_item_group iig166 on ii.item_group_id = iig.item_group_id167 left join is_location il168 on ii.loc_district = il.loc_id169 left join is_location il2170 on ii.loc_building = il2.loc_id171 left join is_location il3172 on ii.loc_floor = il3.loc_id173 left join is_location il4174 on ii.loc_room = il4.loc_id175 go176 177 alter view View_CustomReport_PhysicalCheckInfo178 as179 select iic.holding_id as 'Holding_Id',180 icld.update_datetime as 'Last_Physical_Checked_Date',181 icld.check_by as 'Last_Physical_Checked_By',182 (case when iic.check_status='IP' then 'InProgress'183 when iic.check_status='CP' then 'Completed'184 when iic.check_status='SC' then 'SoConfirm' end) as 'Last_Check_Status'185 from is_check_list icl186 inner join is_check_list_detail icld187 on icl.list_id = icld.list_id and icld.is_manual_check=1188 inner join is_inventory_check iic189 on icl.check_id = iic.check_id190 go191 192 alter view View_CustomReport_Aggregate193 as194 select iig.holding_id as 'Holding_Id',195 ii.barcode_no as 'IMS_Barcode_No000_of_Aggregate_Parent'196 from is_item ii197 inner join is_item_group iig198 on ii.item_group_id = iig.item_group_id199 inner join is_item_aggregate_map iiam200 on ii.item_id = iiam.parent_item_id201 go202 203 alter view View_CustomReport_PurchaseInfo204 as205 select iig.holding_id as 'Holding_Id',206 ii.pr_ref_no as 'Purchase_PR_Ref_No000',207 ii.quot_ref_no as 'Purchase_ICAC_Quotation_Ref_No000',208 ii.purchase_mode as 'Purchase_Mode',209 ii.po_no as 'Purchase_PO_No000___Ref',210 ii.invoice_no as 'Purchase_Invoice_No000',211 ii.date_of_order as 'Purchase_Date_of_Order',212 ii.date_of_receipt as 'Purchase_Date_of_Receipt',213 ii.date_of_acceptance as 'Purchase_Date_of_Acceptance',214 icim.contract_month as 'Free_Warranty_Period',215 ii.holder_file_ref as 'Holder_File_Reference',216 ii.contact_person as 'Contact_Person',217 ii.contact_person_post as 'Contact_Person_Position',218 itdi.voucher_type as 'Purchase_Related_Voucher_Type',219 itdi.voucher_no as 'Purchase_Related_Voucher_No000'220 from is_item ii221 inner join is_item_group iig222 on ii.item_group_id = iig.item_group_id223 inner join(224 select item_id,225 datediff(month,contract_start_date,contract_end_date) as 'contract_month'226 from is_contract_item_map227 where contract_id in(228 select min(contract_id) from is_contract_item_map229 group by item_id230 )231 ) as icim232 on ii.item_id = icim.item_id233 inner join(234 select itdi.item_id,itr.voucher_type,itr.voucher_no235 from is_tx_record itr 236 inner join is_tx_detail_item itdi237 on itr.tx_id = itdi.tx_id238 where itdi.tx_id in(239 select min(tx_id) from is_tx_detail_item240 group by item_id241 )242 ) as itdi243 on ii.item_id = itdi.item_id244 go245 246 create function Func_StrArrayStrOfIndex 247 ( 248 @str varchar(1024), --要分割的字符串 249 @split varchar(10), --分隔符号 250 @index int --取第几个元素 251 ) 252 returns varchar(1024) 253 as 254 begin 255 declare @location int 256 declare @start int 257 declare @next int 258 declare @seed int 259 260 set @str=ltrim(rtrim(@str)) 261 set @start=1 262 set @next=1 263 set @seed=len(@split) 264 265 set @location=charindex(@split,@str) 266 while @location<>0 and @index>@next 267 begin 268 set @start=@location+@seed 269 set @location=charindex(@split,@str,@start) 270 set @next=@next+1 271 end 272 if @location =0 select @location =len(@str)+1273 274 return subget='_blank'>string(@str,@start,@location-@start) 275 end 276 go277 alter view View_CustomReport_LoanInfo278 as279 select iig.holding_id as 'Holding_Id',280 (case when ii.loan_flg=1 then 'On Loan'281 when ii.loan_flg=0 then 'In Hand' end) as 'Current_Loan_Status',282 isc.english_name as 'Staff_Name_of_Borrower',283 dbo.Func_StrArrayStrOfIndex(isc.dept_group_section,'/',1) as 'Borrower111s_Department',284 dbo.Func_StrArrayStrOfIndex(isc.dept_group_section,'/',2) as 'Borrower111s_Group',285 dbo.Func_StrArrayStrOfIndex(isc.dept_group_section,'/',3) as 'Borrower111s_Section'286 from is_item ii287 inner join is_item_group iig288 on ii.item_group_id = iig.item_group_id289 left join is_loan_record ilr 290 on ii.loan_id = ilr.loan_id291 left join is_staff_card isc 292 on ilr.borrower_id = isc.staff_card_id293 go294 295 alter view View_CustomReport_IssueInfo296 as297 select iig.holding_id as 'Holding_Id',298 (case when ii.issue_flg=1 then 'Issued'299 when ii.issue_flg=0 then 'Not Issued' end) as 'Current_Issue_Status',300 od.dept_name as 'Issue_Dept',301 og.group_name as 'Issue_Group',302 os.section_name as 'Issue_Section',303 ou.unit_name as 'Issue_Unit'304 from is_item ii305 inner join is_item_group iig306 on ii.item_group_id = iig.item_group_id307 left join org_department od308 on ii.issued_dept_id = od.dept_id309 left join org_group og310 on ii.issued_group_id = og.group_id311 left join org_section os312 on ii.issued_section_id = os.section_id313 left join org_unit ou314 on ii.issued_unit_id = ou.unit_id315 go316 317 alter view View_CustomReport_EndUserInfo318 as319 select iig.holding_id as 'Holding_Id',320 ieur.end_user as 'Current_Item_End____user',321 convert(varchar(10),ieur.assign_date,105)+' to '+convert(varchar(10),ieur.return_date,105) as 'Usage_Date'322 from is_item ii323 inner join is_item_group iig324 on ii.item_group_id = iig.item_group_id325 inner join is_end_user_record ieur326 on ii.item_id = ieur.item_id327 go328 329 alter view View_CustomReport_SurplusInfo330 as331 select iig.holding_id as 'Holding_Id',332 (case when ii.item_status='SI' then 'Yes'333 else 'No' end) as 'Surplus_Status',334 isipo.[start_date] as 'Surplus_Post_Out_Date_From',335 isipo.end_date as 'Surplus_Post_Out_Date_To'336 from is_item ii337 inner join is_item_group iig338 on ii.item_group_id = iig.item_group_id339 inner join(340 select item_id,[start_date],end_date341 from is_surplus_item_post_out342 where request_id in(343 select max(request_id) from is_surplus_item_post_out344 group by item_id345 )346 ) as isipo347 on ii.item_id = isipo.item_id348 go349 350 alter view View_CustomReport_DisposalInfo351 as352 select iig.holding_id as 'Holding_Id',353 ii.anticipated_date_disposal as 'Anticipated_Disposal_Date',354 (case when idr.disposal_status='R' or idr.disposal_status='V' then 'Not Applicable'355 when idr.disposal_status='D' or idr.disposal_status='W' then 'Requesting'356 when idr.disposal_status='T' then 'Approved by SO'357 when idr.disposal_status='P' then 'Physically Disposed' end) as 'Disposal_Status',358 idr.job_no as 'Dispose_Job_No000',359 idr.dumping_date as 'Date_of_Disposal',360 idr.item_condition as 'Condition_of_Item_in_Disposal',361 idr.disposal_method as 'Disposal_Method',362 itr.voucher_no as 'Disposal_Related_Voucher_No000'363 from is_item ii364 inner join is_item_group iig365 on ii.item_group_id = iig.item_group_id366 inner join is_disposal_record idr367 on ii.item_id = idr.item_id and iig.holding_id = idr.holding_id368 left join is_request ir369 on idr.request_id = ir.request_id370 left join is_tx_record itr371 on ir.out_tx_id = itr.tx_id372 go373 374 alter view View_CustomReport_RepairInfo375 as376 select iig.holding_id as 'Holding_Id',377 (case when ii.item_status='R' then 'Yes'378 else 'No' end) as 'On_Repair_Status'379 from is_item ii380 inner join is_item_group iig381 on ii.item_group_id = iig.item_group_id382 go383 384 alter view View_CustomReport_ReplaceInfo385 as386 select iig.holding_id as 'Holding_Id',387 (case when ii.replace_flg=1 then 'Yes'388 else 'No' end) as 'Replaced_Status',389 ii.barcode_no as 'IMS_Barcode_No_of_Replacing_Item',390 itr.voucher_no as 'Voucher_No_for_Replaced_Item'391 from is_item ii392 inner join is_item_group iig393 on ii.item_group_id = iig.item_group_id394 inner join(395 select itdi.item_id,itr.voucher_no396 from is_tx_record itr397 inner join is_tx_detail_item itdi398 on itr.tx_id = itdi.tx_id399 where itdi.tx_id in(400 select max(tx_id) from is_tx_detail_item401 group by item_id402 )403 ) as itr404 on ii.item_id = itr.item_id405 go406 407 alter view View_CustomReport_DelegateMaintUserInfo408 as409 select iig.holding_id as 'Holding_Id',410 (case when ii.maint_dept_id is null then 'No'411 when ii.maint_dept_id=0 then 'No'412 else 'Yes' end) as 'Delegated_to_others_for_Maintenance',413 od.dept_name as 'Maintenance_Dept',414 og.group_name as 'Maintenance_Group',415 os.section_name as 'Maintenance_Section',416 ou.unit_name as 'Maintenance_Unit'417 from is_item ii418 inner join is_item_group iig419 on ii.item_group_id = iig.item_group_id420 left join org_department od421 on ii.maint_dept_id = od.dept_id422 left join org_group og423 on ii.maint_group_id = og.group_id424 left join org_section os425 on ii.maint_section_id = os.section_id426 left join org_unit ou427 on ii.maint_unit_id = ou.unit_id428 go429 430 alter view View_CustomReport_MaintenanceBasic431 as432 select iig.holding_id as 'Holding_Id',433 ivm.vote_name as 'Maintenance_Vote',434 ii.remarks_maint as 'Remarks_for_Maintenance',435 img.grouping_name as 'Maint000_Grouping',436 iig.gld_contract_no as 'GLD_Contract_No000',437 (case when iig.further_maint_flag=1 then 'Yes'438 else 'No' end) as 'Needed_to_be_Maintenance_Afterwards'439 from is_item ii440 inner join is_item_group iig441 on ii.item_group_id = iig.item_group_id442 inner join is_maint_grouping img443 on iig.maint_grouping = img.[grouping_id]444 left join is_contract_item_map icim445 on ii.item_id = icim.item_id446 left join is_vote_maintenance ivm447 on icim.vote = ivm.vote_id448 go449 450 alter view View_CustomReport_CurrentMaintenanceInfo451 as452 select iig.holding_id as 'Holding_Id',453 imc.ref_contract_id as 'Current_Maintenance_Contract_User_Reference_No000',454 iv.vendor_name as 'Current_Maintenance_Vendor',455 ii.annual_maint_cost as 'Current_Maintenance_Unit_Cost',456 icim.contract_start_date as 'Current_Maintenance_Coverage_Start_Date',457 icim.contract_end_date as 'Current_Maintenance_Coverage_End_Date',458 iml.level_desc as 'Current_Maintenance_Level',459 imc.bu_date as 'Next_Maintenance_BU_Date'460 from is_item ii461 inner join is_item_group iig462 on ii.item_group_id = iig.item_group_id463 left join is_contract_item_map icim464 on ii.item_id = icim.item_id465 left join is_maintenance_contract imc466 on icim.contract_id = imc.contract_id467 left join is_vender iv468 on icim.vendor_id = iv.vendor_id469 left join is_maint_level iml470 on icim.level_of_maint = iml.level_code471 go472 473 474 alter view View_CustomReport_ContractHeader475 as476 select iig.holding_id as 'Holding_Id',477 imc.ref_contract_id as 'Contract_User_Reference_No000',478 imc.contract_name as 'Contract_Name',479 (case when imc.maint_pr_no='null' then ''480 else imc.maint_pr_no end) as 'Maint_PR_Ref_No000',481 icim.contract_start_date as 'Contract_Start_Date',482 icim.contract_end_date as 'Contract_End_Date',483 imc.contact_person as 'Contact_Person',484 imc.contact_person_post as 'Contact_Post',485 imc.bu_date as 'BU_Date'486 from is_item ii487 inner join is_item_group iig488 on ii.item_group_id = iig.item_group_id489 left join is_contract_item_map icim490 on ii.item_id = icim.item_id491 left join is_maintenance_contract imc492 on icim.contract_id = imc.contract_id493 go494 495 alter view View_CustomReport_ItemsVendorInfo496 as497 select imc.holding_id as 'Holding_Id',498 iv.vendor_name as 'Maint_Vendor',499 icvm.contact_person as 'Maint_Vendor_Contact_Person',500 icvm.contact_person_post as 'Maint_Vendor_Contact_Person_Position',501 icvm.quotation_no as 'Maint_Vendor_Quotation_No000',502 icvp.maint_op_no as 'Maint_Po_No000__Ref',503 icvp.group_num as 'Payment_Schedule',504 icvp.actual_payment_date as 'Payment_Date',505 icvp.paid_amount_hkd as 'Paid_Amount',506 (case when icvp.payment_status='1' then 'Paid'507 when icvp.payment_status='0' then 'Not Paid' end) as 'Payment_Status',508 icvp.invoice_no as 'Invoice_No000',509 icvp.file_ref_no as 'File_Ref_No000'510 from is_vender iv511 inner join is_contract_vendor_map icvm512 on iv.vendor_id = icvm.vendor_id513 left join (514 select contract_id,515 vendor_id,516 maint_op_no,517 actual_payment_date,518 paid_amount_hkd,519 payment_status,520 invoice_no,521 file_ref_no,522 row_number() over(partition by contract_id,vendor_id 523 order by actual_payment_date) as 'group_num'524 from is_contract_vendor_payment525 ) as icvp526 on icvm.contract_id = icvp.contract_id and icvm.vendor_id = icvp.vendor_id527 inner join is_maintenance_contract imc528 on icvm.contract_id = imc.contract_id529 go530 531 alter view View_CustomReport_ItemsMaintenanceBasicInfo532 as533 select iig.holding_id as 'Holding_Id',534 ii.serial_no as 'Item_Serial_No000',535 ii.barcode_no as 'IMS_Item_Barcode_No000',536 iig.maint_grouping as 'Maintenance_Grouping',537 ivm.vote_name as 'Maintenance_Vote',538 ii.remarks_maint as 'Remarks_for_Maintenance',539 img.grouping_name as 'Maint000_Grouping',540 iig.gld_contract_no as 'GLD_Contract_No000',541 (case when iig.further_maint_flag=1 then 'Yes'542 else 'No' end) as 'Needed_to_be_Maintenance_Afterwards',543 (case when imc.maint_pr_no='null' then ''544 else imc.maint_pr_no end) as 'Maint_PR_Ref_No000',545 icim.cost_total_hkd as 'Maintenance_Unit_Cost',546 icim.paid_total_price_hkd as 'Maintenance_Unit_Actual_Cost',547 icim.contract_start_date as 'Maintenance_Coverage_Start_Date',548 icim.contract_end_date as 'Maintenance_Coverage_End_Date',549 iml.level_desc as 'Maintenance_Level',550 icim.remarks as 'Item_Remarks_in_this_Contract'551 from is_item ii552 inner join is_item_group iig553 on ii.item_group_id = iig.item_group_id554 inner join is_maint_grouping img555 on iig.maint_grouping = img.[grouping_id]556 left join is_contract_item_map icim557 on ii.item_id = icim.item_id558 left join is_vote_maintenance ivm559 on icim.vote = ivm.vote_id560 left join is_maintenance_contract imc561 on icim.contract_id = imc.contract_id562 left join is_maint_level iml563 on icim.level_of_maint = iml.level_code564 go
海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com
原标题:GridView动态添加列并判断绑定数据DataTable的列类型控制展示内容
关键词:GridView
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。