例如,在之前做的项目中,查询mhz_xckcr表,select出某个业务的现场勘察人信息,select出的现场勘察人姓名(可能有多个)要在前台datagrid的一个datagridcolmn单元格显示出来。
1.查询表数据,保存到实体类集合list中,并返回list:
1 /// <summary> 2 /// 获取现场勘查人列表 3 /// </summary> 4 /// <param>业务ID</param> 5 /// <returns>结果集</returns> 6 public static List<Mbr_Model> GetKCRList(int id) 7 { 8 List<Mbr_Model> list = new List<Mbr_Model>(); 9 string SQLstr = string.Format("select distinct(KCRID),ID,KCRXM from mhz_xckcr a where a.id='{0}'", id); 10 SQLstr += " order by a.kcrid"; 11 try 12 { 13 DataTable table = OracleDBHelp.getDBHelper(OracleDBHelp.DBType.BusinessDB).Query(SQLstr); 14 foreach (DataRow row in table.Rows) 15 { 16 Mbr_Model at = new Mbr_Model(); 17 if (row["id"] != null) 18 at.ID = Convert.ToInt32(row["id"].ToString()); 19 if (row["kcrid"] != null) 20 at.KCRID = row["kcrid"].ToString(); 21 if (row["kcrxm"] != null) 22 at.KCRXM = row["kcrxm"].ToString(); 23 at.ISchecked = true; 24 list.Add(at); 25 } 26 return list; 27 } 28 catch (Exception e) 29 { 30 return null; 31 } 32 }
2.在业务列表的实体类中添加临时属性:xckcrArray(该业务表本身没有字段xckcrArray)。 然后在业务列表的查询方法中,该属性引用以上方法返回的值即可。
at.xckcrArray =YWBL_BLL.GetKCRList(at.ID); //获取现场勘查人集合。
3. 用labelfunction处理datagrid中的一个datagridcolumn单元格显示多字段值。
1 /**3-2获取-现场勘查人*/ 2 public function XCKCRLabel(item:Object,iCol:int ):String 3 { 4 var label_:String = ""; 5 var col:ArrayCollection = item.xckcrArray as ArrayCollection; 6 for each(var ele:Mbr_Model in col) 7 { 8 label_ = label_ + String(ele.KCRXM)+"\x20"; 9 } 11 return label_; 13 }