به منظور نمايش داده در فرم هاي وب ، مي توان کنترل ها را به منابع داده نسبت داد. نسبت دهي داده در فرم هاي وب با سا ير فرم ها ، نظير فرم هاي تحت ويندوز کاملا" متفا وت است . در اين مقاله به بررسي فرآيند فوق در فرم هاي وب و نحوه مشخص نمودن آنا ن براي کنترل ها ي متفاوت خواهيم پرداخت .
ما هيت فقط خواندني داده ها:
نسبت دهي داده در فرم هاي وب بر اين واقعيت استوار است که : دستيابي به داده ها در برنامه هاي تحت وب، عمدتا" بصورت فقط خواندني است . در چنين حا لتي ، صفحات متنا وبا" اطلاعاتي را از يک منبع داده ئي ، نمايش خواهند داد.در اين نوع برنامه ها به موارد کمتري برخورد مي شود که نياز به نوشتن داده ( در مقايسه با خواندن اطلاعات از يک منبع داده ) در يک بانک اطلاعاتي باشد . موارد زير نمونه هائي در اين زمينه مي باشند ( اطلاعات از منابع داده ئي خوانده شده و در اختيار کاربران قرار مي گيرند )
• يک صفحه جستجو که حا وي اطلاعات مربوط به سا ير صفحات و يا محصولات است.اطلاعات نمايش داده شده در صفحه نتا يج ،اغلب بصورت لينک به سا ير صفحات بوده که در چنين حالتي نياز به ورود اطلاعات از طرف کاربر جهت ذخيره در بانک اطلاعاتي نخواهد بود.
• يک صفحه که شامل نتايج مسابقات ورزشي و يا گزارش آب و هوا است .
• يک صفحه که اطلاعات مربوط به بورس و سهام را نشا ن مي دهد.
• و ساير موارد مشابه
معماري نسبت دهي داده در فرم هاي وب ، امکان ويرايش را فراهم نمي کند ، بدين ترتيب مي با يست در صورت لزوم ، منطق مورد نطر جهت انجام اين کار توسط برنامه نويس نوشته گردد. منطق مربوط به ويرايش فرم هاي وب ، به عوامل متفا وتي بستگي خواهد داشت :
• منبع داده چيست ؟
• آيا داده ها توسط يک Dataset مي توانند Cache شوند ؟
• از چه نوع کنترل ها ئي استفاده مي شود؟ ( مثلا" آيا کنترل چندين رکورد را در يک Grid نمايش داده و يا يک رکورد ( مقدار) را در يک TextBox نمايش مي دهد؟)
• قصد استفاده از چه نوع کنترل هائي را بصورت همزمان داريد ؟
نسبت دهي داده در فرم هاي وب کاملا" انعطاف پذير بوده و در اين راستا مي توان هر يک از خصلت هاي يک کنترل را به يک منبع داده نسبت داد. در روش هاي قبلي نسبت دهي داده ، معمولا" به خصلت Display داده ئي نسبت داده مي گرديد. ( مثلا" Text Property مربوط به يک Text box ) . در فرم هاي وب ، منبع داده مي تواند شامل تقريبا" هر نوع اطلاعات قابل دسترس براي صفحات باشد . ( بانک اطلاعاتي ، سند Xml ، يک کنترل و يا پردازش ديگر و يا حتي ما حصل محا سبات انجام شده توسط شما ) . از نسبت دهي داده در موارد زير مي توان استفاده کرد :
• مقداردهي متن مورد نظر جهت نمايش در کنترل هاي Textbox,Lable,Button,LinkButton و ساير کنترل ها
• مقداردهي صفحات مقصد ( HREF ) مربوط به يک Link Control
• نسبت دادن يک کنترل Checkbox به يک مقدار منطقي ( Boolean) بمنظور تنظيم خودکار وضعيت بررسي شده کنترل
• مقدار دهي يک فايل گرافيکي به کنترل Image از طريق نسبت دادن صفت ImageURL به ستون مربوطه اي که حاوي نام فايل گرافيکي در بانک اطلاعاتي است .
• مقدار دهي رنگ ،فونت ،اندازه کنترل ها و ... در موارديکه مي خواهيم رابط کاربري پياده سازي نمائيم که اطلاعات مربوطه بهمراه مقدار پارامترهاي مورد نظر در يک بانک اطلاعاتي ذخيره شده باشند .
کنترل ها ، دو نوع اسا سي نسبت دهي داده را حمايت مي نمايند:
• کنترل هاي چند رکوردي ، قادر به نمايش يک و يا بيش از يک رکورد داده در هر لحظه مي باشند. Repeater ,DataList , DataGrid ، نمونه هائي در اين زمينه مي باشند.
• کنترل هاي تک مقدار ، در هر لحظه قا در به نمايش يک مقدار خواهند بود. اغلب کنترل هاي سرويس دهنده Html نظير textbox,Lable,HtmlInputText,HtmlAnchor نمونه هائي از اين نوع کنترل ها مي باشند.
اغلب کنترل ها امکا ن نسبت دهي خصا يص وصفات به يک مقدار داده ئي را فراهم مي کنند.مثلا" کنترل DataList ، قادر به نمايش چندين رکورد در هر لحظه است اما مي بايست صفت Backcolor آن را صرفا" به يک داده نسبت داد. فرآيند نسبت دهي داده ، با توجه به نوع استفاده شده ( چند رکورد ، تک مقدار ) داراي عملکردي کاملا" متفاوت با يکديگر مي باشند . براي نمايش چندين رکورد مي با يست يک کنترل از نوع چند رکوردي ، را به يک منبع داده که شامل چندين رکورد است نسبت داد ( نظير بردار ،يک مجموعه ،يک جدول و ...) . براي نسبت دهي يک کنترل تک مقدار ، مي بايست مشخص نمود که چه صفتي مي بايست نسبت داده شده و چه مقداري را مي بايست به آن اختصاص يابد .
مقايسه کنترل هاي چند رکوردي و تک رکوردي
برخي از کنترل هاي فرم هاي وب ، قادر به نمايش چندين رکورد اطلاعاتي در يک لحظه مي باشند. کنترل هائي نظير Repeater,DataList,DataGride,CheckBoxList,RadioButtonList نمونه هائي در اين زمينه مي باشند . کنترل هائي نظير Label,Textbox,Checkbox,Hyperlink ، صرفا" در هر لحظه قادر به نمايش يک مقدار ( رکورد) خواهند بود.
براي نسبت دهي داده در رابطه با کنترل هاي چند رکوردي ، مطابق زير عمل مي شود.
در رابطه با اين نوع کنترل ها ، مهم مشخص کردن منبع داده ئي است که مي بايست به يکي از خصلت هاي مربوطه نسبت داده شود . منابع داده ئي مي تواند يکي از موارد زير با شد :
• Source Data و يا container که شا مل رکوردها ي مورد نظر جهت نسبت دهي به يکي از خصلت هاي مربوط به کنترل است ، مي بايست مشخص گردد .
• Data Member ، نظير نا م يک جدول
• يک فيلد يا ستون خاص براي نمايش ، ويژگي فوق در رابطه با کنترل هائي نظير ListBox ،HtmlSelect که چندين آيتم اطلاعا تي را نمايش خواهند داد، استفاده مي گردد.
کنترل هاي چند رکوردي را مي توان به يک DataSet نسبت داد. علاوه بر امکا ن فوق مي توان کنترل هائي از اين نوع را به تقريبا" هر نوع ساختما ن داده ئي که اينترفيس IEnumerable را حمايت مي کنند، نيز نسبت داد:
? ArrayList objects
? Collections
? Data readers (objects of type OleDbDataReader and SqlDataReader)
? DataView objects
? DataRow objects
? DataTable objects in datasets
کنترل هاي تک مقدار ، صرفا" قادر به نمايش يک مقدار ( رکورد) در هر لحظه خواهند بود. مثلا" مي توان صفت Text مربوط به کنترل TextBox را به يک مقدار داده ئي نسبت داد. براي نسبت دادن مقدار به کنترل هائي از اين نوع ،مي توان از روش هاي متعددي بمنظور مشخص نمودن رکورد مورد نظر استفا ده نمود:
• يک Data View را بگونه اي ايجا د کرد که با بکارگيري فيلتر هاي مربوطه صرفا" يک رکورد برگردانده شده و در ادامه مي توان کنترل مورد نظر را به Data view نسبت داد. عبارت مربوط به نسبت دهي داده به اين نوع کنترل ها مطابق زير است. ا يندکس صفر [0] ، مشخص مي نمايد که مي بايست اولين رکورد موجود در Data View انتخا ب و به کنترل مربوطه نسبت داده شود.
DataBinder.Eval(DataView1, "[0].au_lname)
• يک DataSet را بگونه اي تکميل کرد که شامل صرفا" يک رکورد باشد. ( روش فوق يک را هکا ر منا سب جهت استفاد ه از DataSet نخواهد بود )
• استفاده از دستورات SQL و يا Stored Procedure جهت نسبت دهي مقدار به کنترل مورد نظر
/س