目的很明確,直接貼代碼(反射一個(gè)對(duì)象,將屬性存入DataTable中綁定顯示):

public static DataTable CreateDataTabele( object obj)
{
DataTable dt = new DataTable();
DataColumn did = new DataColumn("ID", Type.GetType("System.Int32"));//ID
DataColumn dParentID = new DataColumn("ParentID", Type.GetType("System.Int32"));//父節(jié)點(diǎn)ID
DataColumn dNodeName = new DataColumn("Name", Type.GetType("System.String"));//節(jié)點(diǎn)名
DataColumn dNodeCaption = new DataColumn("Caption", Type.GetType("System.String"));//節(jié)點(diǎn)中文名
DataColumn dCanAdded = new DataColumn("CanAdded", Type.GetType("System.Boolean"));//是否包含子節(jié)點(diǎn)
DataColumn dNodeProperty = new DataColumn("NodeProperty", Type.GetType("System.String"));//屬性
DataColumn dType = new DataColumn("NodeType", Type.GetType("System.String"));
DataColumn dChildName = new DataColumn("NodeChildName", Type.GetType("System.String"));
DataColumn dValue = new DataColumn("NodeValue", Type.GetType("System.Object"));
dt.Columns.AddRange(new DataColumn[] { dParentID, did, dNodeName, dNodeCaption, dCanAdded, dNodeProperty , dType, dChildName,dValue });
int id = 1;
int pid = 0;
DataRow dw = dt.NewRow();
dw["ID"] = id;
dw["ParentID"] = pid++;
dw["Name"] = "FormConfig";
dw["Caption"] = "XXX節(jié)點(diǎn)";
dw["CanAdded"] = false;
dt.Rows.Add(dw);
ReflectObject(obj, ref dt,ref id, pid, 0);
return dt;
}
///遞歸反射節(jié)點(diǎn)
private static void ReflectObject(object obj, ref DataTable dt, ref int id, int pid, int pID)
{
if (obj == null) return;
Type type = obj.GetType();
foreach (PropertyInfo pi in type.GetProperties())
{
DataRow dw = dt.NewRow();
dw["ID"] = ++id;
dw["ParentID"] = pid;
dw["Name"] = pi.Name.ToString();
if ((pi.GetCustomAttributes(true)).Count() > 0) dw["Caption"] = ((DescriptionAttribute)(pi.GetCustomAttributes(true))?[0]).Description;
dw["CanAdded"] = false;
if (pi.PropertyType.Name.ToLower().Equals("list`1"))
{
dw["CanAdded"] = true;
}
dt.Rows.Add(dw);
pID = id ;
if (!(pi.PropertyType).IsPrimitive)
{
if (pi.PropertyType.Name != "String")
{
var proValue = pi.GetValue(obj, null);
if (proValue == null)
{
////個(gè)人使用的單例創(chuàng)建對(duì)象 于讀者無(wú)關(guān)
if(ToolHelper._dicCreate.ContainsKey(pi.PropertyType.Name))
{
proValue = ToolHelper._dicCreate[pi.PropertyType.Name].Invoke();
}
pi.SetValue(obj, proValue, null);
}
ReflectObject(proValue, ref dt, ref id, pID, 0);
}
}
}
}
創(chuàng)新互聯(lián)www.cdcxhl.cn,專(zhuān)業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開(kāi)啟,新人活動(dòng)云服務(wù)器買(mǎi)多久送多久。
新聞標(biāo)題:TreeList用含有樹(shù)形結(jié)構(gòu)的數(shù)據(jù)源綁定顯示-創(chuàng)新互聯(lián)
當(dāng)前路徑:http://www.chinadenli.net/article16/dccegg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、用戶(hù)體驗(yàn)、App設(shè)計(jì)、關(guān)鍵詞優(yōu)化、網(wǎng)站排名、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容