家谱应该从哪辈写?有什么讲究?

栏目:资讯发布:2023-09-22浏览:4收藏

家谱应该从哪辈写?有什么讲究?,第1张

家谱是从家族的开创者或者知名祖先开始撰写的,记录家族世系、传承和家族故事的一种文献。

在编写家谱时,有一些特定的规则和注意事项需要遵循。

首先,家谱的编写应该从家族的始祖或者开基祖开始。始祖是指一个姓氏的最初来源,而开基祖则是家族在特定地域或更远地方的开创者。如果无法确定这些信息,可以从可追溯的最早祖先开始整理。

其次,家谱是对家族历史的研究和记录,必须保持高度的真实性和可信度。因此,在收集和整理资料的过程中,要尽可能地避免夸大、虚构和错误的信息。

第三,除了对事实的尊重,家谱也应该传递积极的信息和价值观。它应该反映出家族的成就、荣誉和道德风貌,以及家族成员在家庭和社会中的作用。

最后,家谱应该根据家族的实际情况和需要进行整理,不仅要包括重要的家族人物和事件,也应该记录下家族的传承、家训和家族文化等重要内容。

在编写家谱的过程中,要尊重和继承老一辈的写作要求和思路。比如在整理家族世系表时,要尽可能详细地记录家族成员的信息,包括他们的生平和重要事件。同时,对于重要的家族故事和传统,也要尽可能地进行详细记录。

总之,家谱的编写是对家族历史和文化的一种重要的传承和保护,必须认真对待,尽可能真实、全面、详细地记录家族的世系、传承和文化信息。

打开一个网页之后,右键---》查看源文件(IE10 为查看源),然后就会弹出网页的源文

件。

点击之后就会出现一个文本样式的代码了

第二种方法就是根据浏览器状态栏或工具栏中的点击 “查看”然后就用一项“查看源代码”,源代码即可查看此网页的源代码源文件。

struct maptype

{

int money,belong;

char name[20];

}map[9][13]={0};

struct player

{

int x,y,money,di;

}man[3]={0};

int dx[5]={0,0,1, 0,-1};

int dy[5]={0,1,0,-1, 0};

int i,j,x,y;

int turn,step,res;

char out[1000];

char s11="姓名史艳文";

char s12="资金";

char s21="姓名比卡超";

char s22="资金";

char s31="你需要付给对手";

char s32="元";

char s41="老友轮到你走啦";

char s42="轮到对手走啦";

char s51="买下此地要";

char s52="买";

char s53="不买";

char s54="老大你的钱不够";

char z1="起点";

char z2="休息处";

char fa="经过起点发旅费";

char m1="路过岳王庙";

char m2="路过纯白镇";

char m3="获取钱三千";

char m4="获取钱六千";

char zi1="行";

char zi2="动";

char zi3="查";

char zi4="看";

char zi5="离";

char zi6="开";

char last="你要花两千元升级地价吗";

#define ESC 0x011b

#define ENTER 0x1c0d

#define LEFT 0x4b00

#define RIGHT 0x4d00

#define UP 0x4800

#define DOWN 0x5000

#include<stdioh>

#include<stdlibh>

#include"firstc"

#include<graphicsh>

#include "bmp16h"

#include"filesc"

int graphdriver=VGA;

int graphmode=VGAHI;

FILE hzk_p;

void open_hzk(void);

void get_hz(char incode[],char bytes[]);

void dishz(int x,int y,char code[],int color);

#include"rich2c"

int main()

{

initgraph(&graphdriver,&graphmode,"");

cleardevice();

open_hzk();

first();

begin();

files();

setbkcolor(0);

while (1)

{

print(0);

step=random(6)+1;

{}

if (turn==1)

{

next3();

}

chuli(turn,step);

buy();

{}

turn=(turn+1)%2;

if (turn==0)

turn=2;

step=0;

}

return 0;

}

void open_hzk()

{

hzk_p=fopen("hzk16","rb");

if (!hzk_p)

{

printf("The file no\n");

getch();

closegraph();

exit(1);

}

}

void get_hz(char incode[],char bytes[])

{

unsigned char qh,wh;

unsigned long offset;

qh=incode[0]-0xa0;

wh=incode[1]-0xa0;

offset=(94(qh-1)+(wh-1))32L;

fseek(hzk_p,offset,SEEK_SET);

fread(bytes,32,1,hzk_p);

}

void dishz(int x0,int y0,char code[],int color)

{

unsigned char mask[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};

int i,j,x,y,pos;

char mat[32];

get_hz(code,mat);

y=y0;

for(i=0;i<16;i++)

{

x=x0;

pos=2i;

for (j=0;j<16;j++)

{

if ((mask[j%8]&mat[pos+j/8])!=NULL)

putpixel(x,y,color);

++x;

}

++y;

}

}

向氏家谱源流向氏字辈大全

中华向氏网 2013年4月9日 万家姓

湖北利川向氏各支派字辈:

向正路之派:“九必福明开正阳光晖天地人忠英信世代兴为国政礼义新尚宽裕广见闻”;

向天荣之派:“世万崇贞这开洪选弟德昌荣历代宗英永锡康平”;

向正常之派:“大志必有成明德绍廷声诗书启良左才学镇乾坤永远怀忠泽精心思传心茂昭垂道焕万世受昌荣”;

岳池迁利川派:“马原有祖永朝秀士永朝秀士学明胜大德兴宗征恩光茂天平地国钧”;

云阳迁利川派,“大宁朝龙列祖忠厚世泽孔长昭穆肖永笃禅人文日碧永新正道应若天兴极成贻谋善承”;

新河迁利川派:“天伦朝元修德立明安帮定国文武长城福禄维述百代昌荣忠廉孝友万载贵人金榜取选项明顺华堂政臣安乐新河南阳”;

派一:“大廷荣耀思遗祯祥贤才应殿昭启龙章天地开甲显达忠良”;

派二:“子山启永秀正大明应宗耀远必裕洪昌尧武圣德”;

派三:“天地宗英修德成仁历代文武正大光明克绍先治家声继承联美百世永威昌荣”;

派四:“天地宗英正大光明彝伦悠序修德成仁”;

派五:“天地钟英修德存仁彝伦悠绪孝友克敦敬忠睦族本立道生诗书礼乐丕振家声”;

派六:“门中文明登正永新兴大必昌道立言绪德达承先遗隆发远继志属仕家声自传”;

派七:“天地君亲师仁义礼智信贞元维秀奇世代显荣昌学大道德正科登久有光承绍能永远启兴自联芳百福长臻守一本际超常诗书传家宝忠孝定朝帮明月辉山海乾坤奠阴阳芝南庭献瑞芙蓉镜中朗桂生金飘岭梅开玉照堂祖宗盘碣固后嗣麟池祥”;

派八:“公泰世正日照乾坤光星兴文荣国永远明士昌帮君赐朝刚华都德景自义宏宽福月登臣季仲联辉康寿维新元镇奇海”;

派九:“天冬……永远帮光国仕大显朝庭”;

派十:“正大光明福寿康宁忠孝传远永德昌荣”;

派十一:“正大光明福寿康宁忠孝传远永德昌荣安帮定国世代启文裕其登厚佳敏成兴源本胜前洪毅崇祯诗书先进显扬秀清”;

派十二:“正大光明治国兴家世德康希永远发达”;

派十三:“左朝庭有相缓月文德阳孔乐承且豆诗书振家香春秋广绍人格之永发祥宗支多启秀万古庆泽长列光既太元盛芹其道昌完方呈荣华先世正大光正大光明孝悌忠信祖德宗功文武安定”;

派十四:“正大光明启福寿康宁喜仁义礼智信忠孝传家举”;

派十五:“正三文庭玉天地人和永绍宗光华绪志为国家珍奇才智长发世代受宏勋”;

派十六:“正兴开大学明德绍绍文光万代承先泽家传定远昌”;

派十七:“世茂仲志文国朝兴正大光明德益维新学开洪选启源宗荫天地君亲永远荣廷”;

派十八;“令君室庭丹光明志有源国正天兴顺官清民自安”;

派十九;“永文宜登高国正天朝大运远泽自长世代启荣光”;

派二十:“仕智正添顺明德茂益盛”;

派二十一:“仕文宜登弟诗学可光荣国正天朝大华祥高信祖”;

派二十二:“仕学可光荣国正天朝大令君室庭丹光明自有源”;

派二十三:“仕文登弟贞德力升”;

派二十四:“朝文学仕元正其堂禹明毓秀永启英光士金功德时登久长”;

派二十五:“天地永兴国祚祯祥启修人纪为帮忠良为述先泽荣华流芳”;

派二十六;“先永圣世文宗启兴体朝光国宏绍希清步祖克续大开乾坤崇学待治丕振昌明瑞积良时万代长荣”;

派二十七:“兴体朝阳金汉呈祥”;

派二十八:“景福志彦文一二三成德明仕为国之珍光昭宇殿辉耀帮庭先声艺苑兰木齐荣奇才长发世守宏勋”;

派二十九:“万兴海治世代承永启源大昌德茂忠良贤绍书香传家孝友定国安康文武发秀兰桂腾芳福寿同庆本支流长乾坤多广耀显明扬河清海晏提升祯祥金榜取选明顺华堂臣正安乐新河南阳继往开来雄略添光奇才立露国定民强少杰鸿展宽洪远扬拓进建勋前程无量科学高登业绩声旺江峰峥嵘美誉为常凡事如意歌颂有章数载存宇腾达辉煌”;

派三十:“朝中文运廷显祖天国安朝中文运廷显祖昌明德肇启世代兴扬柳开碧继帮国之光鸿程大振永远流长”;

派三十一:“朝中英伯元定旺日光昌文才大德胜万代永兴隆”;

派三十二:“必志荣光庭诗书有科名继述长显达维德绍家声世界永大同群支庆昌隆乾坤新开运殷周复兴中人生敦原本家治昭肃雍和顺统南北文明化西东国祚平康泰开心正元洪富贵金玉宝福祥麒凤龙发达英俊举纲常礼纪崇星月江河景诗书孔孟功钧承作述绪继宗仁义凤长远存简策尊荣显祖宗”;

派三十三:“廷朝重可国登学万世海洪大耀金榜富贵紫荣昌永远多吉庆福寿保安康太平甲陵享宇水增家帮诗书最为尚必定出祯祥一齐振兴旺发达河南堂”;

派三十四:“君有善良子孙文武安帮定国世业显荣多奇凤仪永秀成德”;

派三十五:“仕有文大贵正天兴朝辉铭学开洪扬圣文定家帮宗秀永登榜万古得流芳兴明正大昌贤德振兴良和顺统南北群支庆隆昌”;

派三十六:“茂海澄清文明大登正天兴国世万崇祯学开洪选历代宗英第德昌荣永锡康平”;

派三十七:“仕有文大贵正大兴朝辉世万崇祯学开洪选历代宗英第德昌荣永锡康平”;

派三十八:“国正天兴顺官清民自安”;

派三十九:“绍祖仁智大德文武安帮定国事业荣华多奇凤利永秀司泽”;

派四十:“金略起天程世德永长纯本荣智茂孝繁荣庆吉昌育英钟秀灵礼义开鸿仁学正贤志大修知达先登”;

派四十一:“修培先绪贤绍书香传家孝友定国安帮文武发秀兰桂腾芳福寿同庆源远流长”;

派四十二:“首登选贵厚天地忠义明世德光昌永兴文正大廷”;

派四十三:“修德茂洪泽诗书绍先芬奇才作常相昭穆耀乾坤”;

派四十四:“祖芝启可秀正大光明德”;

派四十五:“明史光辉大儒士勋猷正世佐乾坤圣主弘开金榜第满腹经纶卓越才朝廷重贤贵国泰振兴良家富青云志世代显荣昌”。

湖北汉川向氏一支字辈:“慕学志道近宗远绍源清楚发祖启川双世继显云”。

湖北汉川向氏一支字辈:“敬德世继显明元清”。

湖北仙桃向氏字辈:“汉廷思世得晋代振家生”。

湖北清江向氏字辈:“会庆忠子德诗文汝通光日兆朝廷用云礽逓(迪)传方乾元生瑞彩坤运起祯祥开封原世杰官任三振房祖泽熏民从兰选玉季扬扼守清白训裘代永期昌”。

湖北十堰房县向氏字辈:“大天生云修长发富贵荣华文武全”。

湖南秭归向氏字辈:

宋御派:“传系宗祖许士公之大元有能存此道可以守世全朝廷重贤贵国泰振兴良家富青云至永载显名扬”;

归香派:“志必思培立恒文继述昌守道家声振祖传刻永芳”;

杨林派:“严正启发秀世家维文亭”;

茅坪派:“铁方长邦”;

长阳派:“世宗正道自克希贤天锡嘉兆可光荣先”;

其他派:“家龙祖德昌”。

湖南沅陵向氏字辈:

永定老派:“文公明如隆贤时仁行宗八必七弥元天华子宗志永思彦汝锡(正)德学连廷(世道)万文登开国峻发邦家珍”;

永定续派:“登开国峻发邦家孝有成本修声雅烟守先泽远荣”;

永定下莲花派:“志永廷仲国应登君云万士宏大正开”;

永定中莲花派:“子都文志永廷仲守正朝学定科大启万士明高显”;

永定中莲花新派:“文龙祥凤积德培存忠臣名辅孝士克前儒珍受锡嘉玉保全图书献瑞世礼逢年美含春日颂裕家传泽有资益谱宜考占纯笃成习俊哲继宣庭修亮采烈翊南原佩度昭法省体慎言祖楷眙训宝之连绵”;

桐木溪派:“天华子諌才零朝仲正一应文子万国世道永熙和晋礼昌盛化祥兆富玉金光辉昭瑞景振克反樊康平”;

桐木续派:“增广纯武礼美经延蒿凝度九恒树余三善维纪宝达秉书庚楚湘储秀锦桂题魁敦厚集福崇建呸基”。

湖南怀化洪江向氏字辈:“朝宗英伯元子孙其绍志”。

湖南龙山、湘西向氏字辈:“国正天心顺官清民自安地德”。注:该支向氏另有字辈:“起友文士正朝廷”。

湖南邵阳向氏字辈:

老派:“元重必文光祖宗才正应永思念道德,忠信世代书(香)”;

新派:“乾垣生焕彩坤运启祯祥公锡勋名远家声绪业长银台隆系籍绅宦镇辰阳善绍敦伦训贻谋定炽昌”。

湖南隆回向氏字辈:

老派(受一派):“受子仕友荣光德思文道大通方学显正立永继述”;

新派(邵阳派):“乾垣生焕彩坤运启祯祥公锡勋名远家声绪业长银台隆系籍绅宦镇辰阳善绍敦伦训 贻谋定炽昌”。

湖南保靖向氏字辈:“世德荣康修祖启洪泽诗书绍先芬奇才作帝相昭穆耀乾坤”。

湖南平江向氏字辈:“国泰振兴良家富青云至”。

湖南锦屏向氏字辈:“广春士正立克定家邦”。

湖南桃源漳江镇官家坪向氏彝德堂字辈:

原派:“照示来许迪光前人诗书礼乐丕振家声“;

新派:“天地锺(宗)英怀德成仁彝伦存(悠)绪(叙)孝友克敦敬忠睦族本立道生诗书礼乐丕振家声”。

四川绵阳向氏字辈:“定光世道……”

四川巫山向氏字辈:“灿应享琉世大洪昌学善登荣作得传方文明绍启长发其祥”。

四川向氏一支字辈:“正国天朝大世学可光中”。

四川宜宾向氏字辈:“万汝通文允庭秀才志兴思大正光纪富贵鼎述书乾恒生焕彩……”

四川宜宾永兴场向氏字辈:

受一派:“受子仕友荣光德思文道大通才学显正应永继述”;

科朝派:“宗世添必仲才祖思迁文朝仕名国正德安见太平”;

元寿派:“元重必文光祖宗才正应永思念道德忠信世代书”;

万山派:“万汝通文永庭秀才志兴思大正罔纪富贵鼎乾坤”。

四川双流向氏字辈:“天自元于尔以之曰纯全峻德世继显荣源清楚发祖启川双家声兆瑞裕后凡昌振光百业富民强邦崇仁尚匕左师传芳”。

四川宣汉南坝向氏字辈:“传系宗祖许士公之大元有能承此道可以守是本朝庭重贤贵国泰振兴良家富青云志永代显名扬”。

重庆奉节向氏字辈:“发其祥寿世永良绍承斯锡应远腾光崇本正德衍庆兆昌开启宏绪遗传曲章守道明志轩举春芳心存忠厚元善大杨”。

重庆三峡向氏字辈:“启承先祖志本永万昌龄”。

重庆云阳向氏字辈:“先永圣世文宗启兴体朝光国宏绍希清步祖克继大开乾坤崇学待治丕振昌明瑞积良时万代长荣”。

江苏向氏一支字辈:“孝友家声远诗书世泽长之宗敦德广明远树仁崇”。

安徽巢湖向氏字辈:“道从先泽学政”。

江西吉安向氏字辈:“沧廷木一洪启永文兴之水元朝宗明大定世可守时正泰运开修齐宜为首心怀治国才忠爱必先有贤能培德多光裕自长久”。注:该支向氏清朝咸丰九年谱记字辈为:“会庆忠子德思文汝通光日兆朝廷用云礽逓(迪)传芳干元生瑞草坤运起祯祥祖泽熏铭重籣辉蔚秀扬开封原籍世宦应三辰房落首清白训变代永奇昌”。

向氏一支字辈:“光清明志安”。

向氏一支字辈:“业选云多其”。

向氏一支字辈:“明正玉圆望”。

向氏一支字辈:“一德宗元本世代全家人”。

向氏一支字辈:“发长秀新启继文光元正”。

向氏一支字辈:“德章国忠应正大光明富荣昌盛”。

向氏一支字辈:“云日初晓光升达远天欲求家世永登本克成先”。

向氏一支字辈:“文学天光大穆德易召恭万代能显达永世克苍龙”。

 这一节继续来谈 NET中的数据绑定表达式

 本节涉及的内容如下

  一 数据绑定方法的来源以及在低层上的实现

  二 数据绑定方法的执行效率排序

 <%#Container DataItem%><%#GetDataItem()%><%#Eval( 字段名 )%><%#DataBinder Eval(Container DataItem 字段名 )%><%#((DataRowView)Container DataItem)[ 字段名 ] %><%#((Type)Container DataItem) 成员 %><%#((Type)GetDataItem()) 成员 %>    上面七种绑定形式以及它们的变幻形式都用过吗?性能怎么排序?

 复习一下 第一节我们主要谈了数据绑定表达式的各种形式 在ASP NET页面中出现的位置 以及我们常绑定到与数据库有关的DataView DataTable DataSet 等数据源的数据绑定表达式的各种形式

 你有没有对Eval方法和DataBinder Eval方法好奇过?

 在 NET 中我们经常用Eval方法在Repeater DataList GridView等循环控件中绑定数据 Eval方法和DataBinder Eval方法在低层是怎么实现的?它们到底有什么千丝万缕的关系?

  一 来源 实现

 我们常用的Eval方法其实是Page类的一个静态单向只读方法 而且它是一个受保护的方法 实际上Page类的Eval方法是继承自TemplateControl类的 TemplateControl 类是一个抽象类 它为Page 类和 UserControl 类提供通用属性和方法 我们先来看一下继承家谱

 System Object   System Web UI Control    System Web UI TemplateControl       System Web UI Page       System Web UI UserControl    Eval方法就是TemplateControl类的方法 它有两种形式

   名称  说明  TemplateControl Eval (String)  计算数据绑定表达式  TemplateControl Eval (String String)  使用用于显示结果的指定格式字符串计算数据绑定表达式

 事实上TemplateControl类还提供了XPath方法和XPathSelect方法供Page类和UserControl继承 这 个方法是和XML数据源有关的绑定方法

 如果细心的你查看TemplateControl类的基类Control类 你就会发现其实Control类并没有提供Eval XPath XPathSelect等方法 所以Eval XPath等方法最终是在TemplateControl类中实现的

 现在 终于找到了Eval XPath等数据绑定方法的来源了

 Eval XPath等方法是 NET 新增的方法 在 NET 时代我们经常用的是DateBinder Eval方法 形如

 <%#DataBind Eval(Container DataItem 字段名 ) %>

 <%#DataBind Eval(Container DataItem 字段名 { c} ) %>

 Eval的出现其实就是为了简化DataBinder Eval方法的写法从而代替它

 在ASP NET 中及以上 当我们调用Eval时 Eval 方法会使用GetDataItem方法调用DataBinder Eval方法计算表达式的值 要想理解这句话 就算查边MSDN也一头雾水 除非我们知道Eval方法的源代码 否则根本找不到蛛丝马迹 这里就要用到反射了 我们通过反射获得了Eval方法的源代码

 protected   internal   object   Eval(string   expression)

 {

 this CheckPageExists()

 return   DataBinder Eval(this Page GetDataItem()  expression)

 }

 终于见到GetDataItem()方法了 其实它就是Page类的一个方法 也是 NET 新增一个方法 GetDataItem()方法的作用是为了获得Container DataItem 它是 NET 中用来代替Container DataItem的 如果你曾经用Repeater和DataList等绑定过数组或者ArrayList等 你就会发现<%#GetDataItem()%>和<%#Container DataItem%>等价 同时 可以肯定 Eval方法在低层上确实是调用DataBinder Eval方法实现数据绑定的 其中 this CheckPageExists() 是检查调用的时候有没有Page对象的 如果没有则会抛出一个异常

 要弄清Eval是怎么工作的 GetDataItem()方法的低层实现我们也要用反射来获取

 public object GetDataItem()

 {

 if ((this _dataBindingContext == null) || (this _dataBindingContext Count == ))

 {

 throw new InvalidOperationException(SR GetString( Page_MissingDataBindingContext ))

 }

 return this _dataBindingContext Peek()

 }

 我们从GatDataItem()方法中看到 return   this _dataBindingContext Peek() 很快就猜想_dataBindingContext是不是一个堆栈呢?事实它就是一个堆栈!通过反射查看源代码我们得出 _dataBindingContext是一个Stack类型对象 所以它有Peek方法 return   this _dataBindingContext Peek() 正是把堆栈顶部的元素返回 而if语句是用来判断这个堆栈是否已经存在或者是否已经有元素存在 如果if不成立 就会抛出一个异常

 从上面的分析我们知道 _dataBindingContext堆栈的作用是通过GetDataItem()方法这个桥梁向Eval方法提供Container DateItem 用逆向思维来理解上面这句话 Eval方法可以自动计算出Container DataItem 原因就是从dataBindingContext堆栈来获取Container DataItem 这也就为什么Eval方法能够知道形如<%#Eval 字段名 %>中字段名隶属于哪个数据项的属性的原因 同时我们也知道 NET 中的Eval在本质上的实现并没有抛弃Container DataItem 而Container DataItem在 时代也没有消失

 那么_dataBindingContext这个保存Container DataItem的堆栈是怎么建立的呢?

 我们很快就想到每次绑定控件时候最后那条语句是什么 this 控件ID DataBind() 对就是DataBind()方法 DataBind()方法还有一个重载 DataBind(bool raiseOnDataBinding) 为_dataBindingContext这个堆栈压入元素和弹出元素的方法正是用DataBind(bool flag)这个重载方法实现的

 DataBind(bool raiseOnDataBinding)在低层的实现

 protected virtual void DataBind(bool raiseOnDataBinding)    {        bool flag = false;//这个标志的用处在上下文中很容易推出来 如果有DataItem压栈 则在后面出栈         if (this IsBindingContainer)//判断控件是不是数据绑定容器 实际上就是判断控件类是不是实现了INamingContainer          {            bool flag ;            object obj = DataBinder GetDataItem(this out   flag );//这个方法是判断控件是不是有DataItem属性 并把它取出来             if (flag && (this Page != null))//如果控件有DataItem              {                this Page PushDataBindingContext(obj );//把DataItem压栈 PushDataBindingContext就是调用_dataBindingContext的Push方法                  flag = true;            }        }        try        {            if (raiseOnDataBinding)//这里是判断是不是触发DataBinding事件的             {                this OnDataBinding(EventArgs Empty);            }            this DataBindChildren();//对子控件进行数据绑定 如果这个控件有DataItem 则上面会将DataItem压入栈顶 这样 在子控件里面调用Eval或者GetDataItem方法 就会把刚刚压进去的DataItem给取出来         }        finally        {            if (flag )//如果刚才有压栈 则现在弹出来             {                this Page PopDataBindingContext();//PopDataBindingContext就是调用_dataBindingContext的Pop方法              }        }    }     当我们执行到this 控件ID DataBind() 时候 在低层上就会调用这个重载的方法来准备包含DataItem的_DatBindingContext堆栈

 上面的代码中提到了DataBinding事件 那么它一般什么时候被触发呢?

 1 如果用编程方式 那么在我们调用DataBind()方法时候自动触发DataBinding事件

 2 如果我们用数据源控件(例如SqlDataSource等) 当把控件绑定到数据源控件时候 这个事件就会自动触发

 一般数据绑定表达式常常放在模板中循环显示数据 例如Repeater和DataList等的模板 那么下面这个知识点应该知道 Repeater DataList FormView等控件必须使用模板 如果不使用模板 这些控件将无法显示数据 而GridView DetailsView Menu等控件也支持模板 但显示数据时不是必须的 而TreeView控件不支持模板

 注意 一般情况下 数据绑定表达式不会自动计算它的值 除非它所在的页或者控件显示调用DataBind()方法 DataBind()方法能够将数据源绑定到被调用的服务器控件及其所有子控件 同时分析并计算数据绑定表达式的值

 终于写的有点眉目了 好累!我们该回头看看Eval方法调用的静态DataBinder Eval方法在低层的实现了 我把DataBinder类的源代码作为附近提供下载

  二 执行效率

 从 一 讲述的低层实现 我们很容易来排序下面数据绑定表达式的执行效率<%#Container DataItem%><%#GetDataItem()%><%#Eval( 字段名 )%><%#DataBinder Eval(Container DataItem 字段名 )%><%#((DataRowView)Container DataItem)[ 字段名 ] %><%#((Type)Container DataItem) 成员 %><%#((Type)GetDataItem()) 成员 %>    效率最高应该是 <%#((Type)Container DataItem) 成员 %><%#Container DataItem%><%#((DataRowView)Container DataItem)[ 字段名 ] %>    效率排第二的是 <%#((Type)GetDataItem()) 成员 %><%#GetDataItem()%>    效率最低的是 <%#Eval( 字段名 )%><%#DataBinder Eval(Container DataItem 字段名 )%>    其实按上面的排序有失公允 原因是这七种数据表达绑定形式运用的场合不是完全相同的

 使用场合大概如下

  |<%#Eval( 字段名 )%><%#DataBinder Eval(Container DataItem 字段名 )%>    它们的使用场合最广 数据源可以为与数据库有关的DataSet DataTable DataView 也可以为普通集合(例如 数组 ArrayList HashTable等)和泛行集合(例如 List<T> Dictionary<Tkey Tvalue>等)

 注 它们 个永远可以相互替换 至少目前是这样 凡是可以用Eval方法的地方 就可以用DataBinder Eval方法替换 从低层实现上 Eval比DataBinder Eval方法效率稍低 原因是Eval方法对了调用GetDataItem()方法这一步 但最终都是通过DataBinder Eval方法利用反射技术根据名称查找属性 从而计算出表达式的值 所以非常影响性能

 

 <%#((DataRowView)Container DataItem)[ 字段名 ] %>

 它只能使用在数据源为与数据库有关的Dataset DatTable DataView 这些数据源都实现了IListSource接口 其实从低层实现本质上来看 它和<%#((Type)Container DataItem) 成员 %>类似

lishixinzhi/Article/program/net/201311/11866

家谱应该从哪辈写?有什么讲究?

家谱是从家族的开创者或者知名祖先开始撰写的,记录家族世系、传承和家族故事的一种文献。在编写家谱时,有一些特定的规则和注意事项需要遵...
点击下载
热门文章
    确认删除?
    回到顶部