⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 abstractrecord.cs

📁 一种.net实现ajax方法的类库
💻 CS
📖 第 1 页 / 共 5 页
字号:
                        props.Add(string.Format("{0}:{1}", col.Name, val));                        break;                    case JSON.Type.Array:                        props.Add(string.Format("{0}", val));                        break;                }            }            return open + Util.Join(props) + close;        }        protected bool loading = false;        public static T LoadFromDataRow<T>(DataRow row) where T : AbstractRecord, new()        {            ColumnInfo[] fields = ColumnInfoManager.RequestColumns<T>();            T r = new T();            r.loading = true;            r.id = Convert.ToInt32(row["ROWID"]);            foreach (ColumnInfo fi in fields)            {                if (fi.DataType != DataType.RecordList)                {                    if (row.Table.Columns.Contains(fi.Name))                    {                        if (fi.DataType == DataType.RecordSelect && (row[fi.Name] is int && (int)row[fi.Name] == r.id))                        {                            r[fi.Name] = r;                        }                        else                        {                            r[fi.Name] = PropertyConverter.Convert(row[fi.Name], fi.Type);                        }                    }                }                else                {                    try                    {                        MethodInfo mi = typeof(T).GetMethod("LoadChildren", BindingFlags.NonPublic | BindingFlags.Instance, null,                                           new Type[] { typeof(ColumnInfo) }, null);                        mi = mi.MakeGenericMethod(fi.Type.GetGenericArguments()[0]);                        r[fi.Name] = mi.Invoke(r, new object[] { fi });                    }                    catch { } //TODO: add logging.                }            }            r.loading = false;            return r;        }        public virtual void Delete()        {            if (deletedRecordListeners.ContainsKey(this.GetType()))                deletedRecordListeners[this.GetType()](this);            if (OnDelete != null)                OnDelete(this);        }        //Properties        public virtual DataProvider Provider { get{return null;} }        public object ObjectId { get { return Id; } }        public virtual string DefaultProperty { get { return "ObjectId"; } }        public virtual object Value { get { return Id; } set { throw new System.NotSupportedException("SetValue must be overridden."); } }                //Methods        public virtual void Save(bool SaveChildren){}        public virtual void Save(){}                public override string ToString()        {            if (this[DefaultProperty] != null)                return this[DefaultProperty].ToString();            else                return base.ToString();        }        public static object[] emptyObjectArray = new object[] { };                //Events        public event RecordHandler OnChange;        public event RecordHandler OnDelete;        //Helpers        protected static Dictionary<Type, RecordHandler> newRecordListeners = new Dictionary<Type, RecordHandler>();        public static void RegisterNewListener(Type type, RecordHandler handler)        {            newRecordListeners[type] = handler;        }        protected static Dictionary<Type, RecordHandler> changedRecordListeners = new Dictionary<Type, RecordHandler>();        public static void RegisterChangedListener(Type type, RecordHandler handler)        {            changedRecordListeners[type] = handler;        }        protected static Dictionary<Type, RecordHandler> deletedRecordListeners = new Dictionary<Type, RecordHandler>();        public static void RegisterDeletedListener(Type type, RecordHandler handler)        {            deletedRecordListeners[type] = handler;        }        public static void UnregisterDeletedListener(Type type, RecordHandler handler)        {            deletedRecordListeners[type] -= handler;        }        public static void UnregisterNewListener(Type type, RecordHandler handler)        {            newRecordListeners[type] -= handler;        }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -