Selection for Master-Details Form – जैसाकि पिछले Chapter में हमने विस्तार से समझा था कि हम किसी Control के साथ किसी अन्य Data Source को Parameters के माध्यम से Command and Parameters Editor Window का प्रयोग करते हुए Bind कर सकते हैं।
उदाहरण के लिए हम दो GridView Controls को अपने Webpage पर Add कर सकते हैं और पहले GridView Control में Select किए गए Record के आधार पर Query Perform करते हुए Generate होने वाले Result को दूसरे GridView Control द्वारा Render कर सकते हैं।
GridView Control के सन्दर्भ में देखें, तो हमें SelectedIndex Property को Parameter के रूप में Bind करना होता है, ताकि पहले GridView Control के Currently Selected Record को इस Property द्वारा Identify किया जा सके।
लेकिन इस Approach के साथ भी एक समस्या है और समस्या ये है कि SelectedIndex Property हमेंशा Zero-Based Index Number Represent करता है, जो कि Grid में नया Record Add होने या किसी पुराने Record के Delete होने के साथ ही Current Record की Position Change हो जाती है।
इसलिए हम SelectedIndex Property को किसी Record को Uniquely Identify करने के लिए Use नहीं कर सकते, बल्कि हमें एक ऐसे Key Field की जरूरत होती है, जिससे हम GridView के सभी Records को Uniquely Identify कर सकें, फिर भले ही GridView में नया Record Add हो या कोई पुराना Record Delete हो, इस Change का प्रभाव उस Key पर न पडे।
इस परेशानी को GridView Control के साथ उपलब्ध SelectedDataKey Property द्वारा Solve किया जा सकता है और GridView Control के इस Feature को Use करने के लिए हमें GridView.DataKeyNames Property को Set करना जरूरी होता है, जिसमें एक Comma Separated List के रूप में एक या अधिक Key Files (Primary Keys) को Set किया जाता है।
GridView.DataKeyNames Property में हम जिन भी Primary Keys को Comma Separated List के रूप में Specify करते हैं, उन सभी Primary Keys का नाम Bound Object में Exist Key Fields के नाम से Match होना जरूरी होता है। हालांकि सामान्यत: इस Property में हम Bound-Record की किसी एक Primary Key Field को ही Set करते हैं। जैसे:
जब एक बार हम इस तरह से GridView Control को Bind कर देते हैं, उसके बाद हम दूसरे Data-Source को इस Field के साथ Bind कर सकते हैं। उदाहरण के लिए हम निम्न Code देख सकते हैं, जिसमें Territories Table से सभी Matching Records को Retrieve करने के लिए EmployeeID को Join Query में Use किया गया है। अन्य शब्दों में कहैं, तो इस Code में Data Source Control उन सभी Regions को Retrieve करता है, जिन्हें कोई Specific Employee Manage करता है:
इस उदाहरण के में SqlDataSource EmployeeID नाम के एक Single Parameter को Use करता है, जो कि Selected Employee Record होता है। इस EmployeeID Value को First GridView Control के SelectedDataKey.Values Collection से Retrieve किया जाता है।
हम इस EmployeeID Field को उसकी Index Position से प्राप्त कर सकते हैं, जो कि हमारे उदाहरण में 0 है, क्योंकि DataKeyNames List में फिलहाल केवल एक ही Key Field है अथवा हम Key Field के नाम का प्रयोग कर सकते हैं। यहां Key Field को Represent करने का केवल एक ही Trick है कि हमें Quotation Mark को हमेंशा HTML Character Entity (") से Replace करते हैं।
अन्त में हम हमारे Second GridView Control को इस दूसरे Data Source से Bind करते हैं, जो कि Territory Records को Render करता है और इसके लिए हमें निम्न Codes लिखने होते हैं:
इस प्रकार से यदि हम इस Example Webpage को Run करें, तो हमें निम्नानुसार Output प्राप्त होता है, जहां पहले GridView Control में हम जिस Row को Select करते हैं, दूसरे GridView Control में हमें उसी Row से सम्बंधित सभी Related Records दिखाई देते हैं:
जबकि इस Example को Create करते समय Visual Studio हमारे लिए जो Markups Generate करता है, वो निम्नानुसार है:
जबकि यदि हम इस Example के दूसरे SqlDataSource Control की SelectQuery Property के साथ Associated Ellipsis Button को Click करें, तो हमारे सामने Display होने वाले Command and Parameters Editor Window निम्नानुसार Display होता है:
इस तरह से इस Example को Follow करते हुए हम हमारे Web Application में Master-Detail Forms Create कर सकते हैं, जो कि लगभग सभी Database आधारित Web Applications का एक महत्वपूर्ण हिस्सा होते हैं।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Advance ASP.NET WebForms with C# in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
Advance ASP.NET WebForms in Hindi | Page:707 | Format: PDF