ASP.NET Data Binding Model

ASP.NET Data Binding : किसी भी Web Application के ज्यादातर हिस्से Data-Driven होते हैं। अत: Web Development Platform में HTML Elements जैसे कि Drop-Down Lists या Tables को Structured Data या Backend Database से आने वाले Data के साथ Bound करना एक बहुत ही महत्वपूर्ण Feature होता है।

Data Bounding एक ऐसा ही Process है जो किसी Specified Sources से Data को Retrieve करता है और फिर उस Data को किसी User Interface Element की किसी Property के साथ Associated कर देता है।

ASP.NET में Data Binding Operation के लिए जो Valid Target होता है वह Server Control ही होता है, जिसे Bound-Control के नाम से जाना जाता है, क्‍योंकि Server Controls के साथ ही Data-Binding की जा सकती है।

Data-Bound Server Controls अलग प्रकार के Controls नहीं होते, बल्कि वे भी अन्‍य Server Controls की तरह सामान्‍य Controls ही होते हैं, लेकिन इनमें कुछ ऐसी Special Properties होती हैं, जो इन्हें Data-Bound Controls की तरह Treat होने लायक बना देती हैं। परिणामस्वरूप इस Special Properties वाले सभी ASP.NET Web Controls को Data-Bound Control कहा जाता है।

ASP.NET में Data-Bound Controls को मूलत: तीन Different Categories में Divide किया जा सकता है, जिन्हें List, IterativeView Controls के नाम से जाना जाता है। जहां –

  1. List Controls किसी Data-Source के प्रत्‍येक Item को Place करने के लिए एक Fixed Template को Repeat करने का काम करते हैं। जबकि
  2. Iterative Controls, List Controls की तरह ही तुलना में ज्यादा Flexible होते हैं और किसी Data-Source के प्रत्‍येक Item को Place करने के लिए एक ज्यादा बेहतर Template को Manually Define करते की सुविधा देते हैं, जिसका प्रयोग करते हुए हम Data-Source के Data Repeat करने की सुविधा प्राप्त करते हैं।
  3. इसी तरह से View Controls काफी Rich User Interface Controls होते हैं, जो हमें Fixed व Data-Driven Behavior Provide करते हैं, जिसके कारण हम किसी Underlying Database के किसी Table अथवा उस Table के किसी Single Row के Data को बेहतर तरीके से Render करने की सुविधा प्राप्त करते हैं।

इस Chapter में हम इन्हीं Data-Binding Controls के बारे में विस्तार से समझने व उपयोग में लेने के बारे में जानेंगे।

ASP.NET Data Binding Model

ASP.NET Data-Binding Model किसी भी Web Control की कुछ Specific Properties पर आधारित है, जहां एक ASP.NET Webpage Developer के रूप में हम Web Controls की इन Data-Bound Properties में उस Data के Collections को Assign करते हैं, जिन्हें इन Web Controls के माध्‍यम से हमें Output के रूप में Webpage पर Render करना होता है।

Web Controls के User Interface को Modify करने के लिए सम्बंधित Web Controls की Data-Bound Properties में Data Collection को Assign कर देना मात्र ही पर्याप्त नहीं होता। बल्कि Actual Data-Binding Process तब शुरू होता है, जब Page Lifecycle के Flow होते समय किसी Particular Page या Control पर DataBind() Method को Execute करता है।

किसी Control के लिए Data-Binding Action के Perform होने का मतलब, उसकी Internal State को इस बात के लिए Update करना होता है कि उसकी Bind हो सकने वाली Properties में किसी Collection of Data को Assign किया गया है। सरल शब्दों में कहें तो किसी Control के Data-Binding Properties में किसी Collection of Data का Assign होना ही उसके लिए Data-Binding Action का Perform होना है। परिणामस्वरूप जब Bind-Controls के Markups Render होते हैं, तब जिन Collection of Data को उस Bound-Controls को Assign किया गया होता है, वे Data भी Output में Render हो जाते हैं।

लेकिन सवाल ये है कि किस प्रकार के Collection of Data को इन Data-Bound Controls की Data-Binding Properties में Assign किया जा सकता है?

चलिए समझने की कोशिश करते हैं:

Feasible Data Sources

हम केवल Database Content से सम्बंधित Data-Sources Classes को ही नहीं बल्कि कई अन्‍य प्रकार की .NET Classes को भी Data-Source की तरह Use करते हुए Bound-Controls की Data-Binding Properties में Assign कर सकते हैं।

वास्तव में ASP.NET में हम वह Object जिसमें IEnumerable Interface को Implement किया गया हो, को एक Valid Bindable Data-Source की तरह Bind-Controls में Assign कर सकते हैं।

क्‍योंकि IEnumerable Interface उस Minimum API को Define करता है, जिसकी जरूरत किसी Data-Source के Contents को Enumerate करने के लिए होती है और इस API के रूप में केवल GetEnumerator() नाम के Method को Implement करना होता है, जो कि IEnumerator Type का Object Return करता है। यानी:

public interface IEnumerable
{
    IEnumerator GetEnumerator();
}

हालांकि कई Bindable Objects जैसे कि ICollection IList, IEnumerable के काफी Advanced Versions को Implement करते हैं। लेकिन फिर भी हम निम्न Classes के साथ किसी भी Web Control को Bind कर सकते हैं:

  • Collections (including dictionaries, hashtables, and arrays)
  • NET container classes such as DataSet, DataTable, and DataView
  • NET data readers
  • Any IQueryable object that results from the execution of a LINQ query

वास्तव में DataSetDataTable Classes में IEnumerable Interface अथवा किसी ऐसे Interface को Implement नहीं किया गया है, जिसमें IEnumerable Interface को Inherit किया गया हो। फिर भी ये दोनों Classes Data के Collection को Internally Store करने में सक्षम हैं, इसलिए इन्हें भी किसी भी Web Control को Data-Source की तरह Assign किया जा सकता है। क्‍योंकि DataSet व DataTable नाम के ये Collections, IListSource नाम के एक Intermediate Interface में Defined Methods के माध्‍यम से Access होते हैं, जो DataSet व DataTable Classes को इस प्रकार से Simulate करते हैं, जैसेकि उनमें IEnumerable Interface को Implement किया गया हो।

Collection Classes

यदि हम बिल्कुल ही Simple तरीके से समझें तो Collection एक ऐसा Container होता है, जिसमें अन्‍य Classes के Objects Contained होते हैं।

अन्‍य शब्दों में कहें तो Collection एक Special प्रकार का Array होता है, जिसमें काफी सारे Special Features होते हैं, जो उसे Array की तुलना में अधिक Powerful बना देते हैं।

सभी Collection Classes में ICollection Interface को Implement किया गया होता है, जो कि IEnumerable Interface को भी Implement करते हैं। परिणामस्वरूप सभी Collection Classes समान प्रकार की Basic Functionalities Provide करते हैं।

सभी Collection Classes में एक Count Property होती है, जो कि अपने Collection में Exist कुल Items की संख्‍या Return करता है। साथ ही इनमें CopyTo() नाम का Method भी होता है, जो कि इनमें Contained एक या अधिक Items को अन्‍य Object में Copy करने का काम करता है।

इसके अलावा सभी Collection Classes में GetEnumerator() नाम का एक Method भी होता है, जो कि Container में Contained सभी Items को Loop करते हुए One-by-One Access करता है और यही वह Method है, जो हमें C# में foreach Statement को तथा MS Visual Basic में For … Each Statement को Use करने की सुविधा देता है। यानी यदि इस Method को Implement न किया गया हो, तो हम foreach Statement को Use नहीं कर सकते।

यदि आप Collections की Internal Working को ठीक से नहीं जानते, तो आपके लिए हमारी अन्‍य पुस्तक “C#.NET in Hindi” पढ़ना काफी उपयोगी साबित होगा, क्‍योंकि इस पुस्तक में C# के लगभग सभी महत्वपूर्ण Programming Concepts को काफी Simple Examples द्वारा काफी Detail से समझाया गया है और जब तक आप Collections को ठीक से नहीं समझते, तब तक आप ASP.NET WebForms Application के GUI को ठीक से नहीं समझ सकते।

ADO.NET Classes

ADO.NET हमें बहुत सारी Container Classes Provide करता है, जिन्हें Underlying Database पर Fire की गई SQL Query द्वारा Generated Data सहित विभिन्न प्रकार के अन्‍य Data से भी Fill किया जा सकता है। सामान्‍यत: ये Classes विभिन्न प्रकार के Data-Bound Controls में Fill किए जाने वाले Data-Source की तरह Use होते हैं और DataSet जैसे Memory Based Classes भी इस List में शामिल हैं।

हम किसी Open Data-Reader को भी किसी Web Control के Data-Binding Engine को Pass कर सकते हैं और जब हम ऐसा कर देते हैं, उसके बाद वह Web Control, Database Connection को Busy रखते हुए Client Side में Render करने के लिए User Interface को Populate करता है।

यानी Webpages व Desktop Applications के लिए Data-Binding अलग तरीके से काम करता है और दोनों के बीच जो सबसे बडा अन्तर होता है वो यही होता है कि Webpages में Page या Control Class के लिए Data-Binding Process को DataBind() Method को Call करते हुए Manually Start करना पडता है। जबकि Desktop Applications में किसी Bindable Property में Data-Source को Assign कर देने मात्र से उस Specific Control के लिए Binding Process Automatically Trigger हो जाता है।

यदि आप ADO.NET के बारे में ठीक से नहीं जानते, तो आपके लिए हमारी अन्‍य पुस्तक “ADO.NET in Hindi” पढ़ना काफी उपयोगी साबित होगा, क्‍योंकि जब तक आप ADO.NET को ठीक से नहीं समझते, तब तक इस पुस्तक में दिए गए किसी भी उस Simple से Example को भी नहीं समझ पाऐंगे, जो कि Database से Data Retrieve करता है व Database में Data को Insert / Update करता है।

Queryable Objects

LINQ (Language for Integrated Query) एक Query Language है, जो कि काफी हद तक SQL-Like Syntax का प्रयोग करते हुए Data-Sources (Enumerable Collections of Data) से Required Data की Query करता है। परिणामस्वरूप LINQ Query से Return होने वाला Output एक Queryable Object होता है, जिसे हम एक ऐसे Command की तरह Use कर सकते हैं, जो कि Required Data को Retrieve करता है।

Queryable Objects की सबसे बडी विशेषता ये है कि हम इन Queryable Objects को किसी भी Web Control के साथ उस स्थिति में भी Bind कर सकते हैं, जबकि इनके द्वारा कोई भी Data Retrieve न हुआ हो। यानी हम इन Objects को किसी Web Control के साथ बिना Data Retrieve होने की स्थिति में भी Bind कर सकते हैं।

यदि आपको “LINQ” के बारे में पर्याप्त Basic जानकारी नहीं है, तो बेहतर होगा कि आप पहले “C#.NET in Hindi” पढें, जिसमें LINQ को काफी सरल भाषा में Simple Examples का प्रयोग करते हुए समझाया गया है।

Advance ASP.NET WebForms with C# in Hindi - BccFalna.com: TechTalks in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook Advance ASP.NET WebForms with C# in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।

Advance ASP.NET WebForms in Hindi | Page:707 | Format: PDF

BUY NOW GET DEMO REVIEWS