private void tbtEdit_Click(object sender, EventArgs e) { if (dataGridView.CurrentRow == null) { MessageBox.Show("请选择一项!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } CWindow obj = (CWindow)dataGridView.CurrentRow.Tag; RecordWindow frm = new RecordWindow(Program.Ctx.WindowMgr, obj); if (frm.ShowDialog() != DialogResult.OK) { return; } CBaseObjectMgr BaseObjectMgr = Program.Ctx.WindowMgr; DataGridViewRow row = dataGridView.CurrentRow; foreach (DataGridViewColumn column in dataGridView.Columns) { CColumn col = (CColumn)column.Tag; if (col.ColType == ColumnType.object_type) { if (obj.GetColValue(col) != null) { row.Cells[column.Name].Value = "long byte"; } } else if (col.ColType == ColumnType.ref_type) { CTable table = (CTable)Program.Ctx.TableMgr.Find(col.RefTable); if (table == null) { continue; } CColumn RefCol = (CColumn)table.ColumnMgr.Find(col.RefCol); CColumn RefShowCol = (CColumn)table.ColumnMgr.Find(col.RefShowCol); object objVal = obj.GetColValue(col); Guid guidParentId = Guid.Empty; if (BaseObjectMgr.m_Parent != null && BaseObjectMgr.m_Parent.Id == (Guid)objVal) { row.Cells[column.Name].Value = BaseObjectMgr.m_Parent.GetColValue(RefShowCol); } else { CBaseObjectMgr objMgr = Program.Ctx.FindBaseObjectMgrCache(table.Code, Guid.Empty); if (objMgr != null) { CBaseObject objCache = objMgr.FindByValue(RefCol, objVal); if (objCache != null) { row.Cells[column.Name].Value = objCache.GetColValue(RefShowCol); } } else { objMgr = new CBaseObjectMgr(); objMgr.TbCode = table.Code; objMgr.Ctx = Program.Ctx; string sWhere = string.Format(" {0}=?", RefCol.Code); List <DbParameter> cmdParas = new List <DbParameter>(); cmdParas.Add(new DbParameter(RefCol.Code, obj.GetColValue(col))); List <CBaseObject> lstObj2 = objMgr.GetList(sWhere, cmdParas); if (lstObj2.Count > 0) { CBaseObject obj2 = lstObj2[0]; row.Cells[column.Name].Value = obj2.GetColValue(RefShowCol); } } } } else { row.Cells[column.Name].Value = obj.GetColValue(col); } } }