Data Binding: Grid View, List Box, Data binding Events, Repeater, Form View

Data binding data के एक collection को एक control से connect करता है ताकि यह automatically हर item display करे: events की एक list एक GridView, ListBox, Repeater या FormView को हाथ में दीजिए और यह आपके लिए सारी rows render करता है, per item कोई manual HTML नहीं।

10 min read · 8 cards · 2 checks

Read in: English · हिन्दी · ગુજરાતી


Theory

एक List, कई Rows, कोई Copy-Paste नहीं

FestConnect के पास events की एक list है, शायद 30, और हर एक को screen पर एक row चाहिए: name, date, venue। आप 30 blocks HTML hand-write नहीं करने वाले, और आप certainly हर बार event list बदलने पर इन्हें re-edit नहीं करेंगे।

इसकी बजाय आप पूरी list एक control को हाथ में देते हैं और इसे आपके लिए हर row draw करने देते हैं। यही data binding है: data के एक source को एक control से connect करना जो इसे display करता है। Underlying list बदलिए और display follow करता है। यह lesson data binding और इसे इस्तेमाल करने वाले main controls cover करता है: GridView, ListBox, Repeater और FormView।

Theory

Data Binding कैसे काम करता है

Pattern हमेशा same दो steps है। आप control का DataSource अपने data पर set करते हैं (एक list, एक DataTable, एक query के results), फिर आप DataBind() call करते हैं। Control data के through walk करता है और per item एक entry render करता है।

यही पूरा idea है: इसे data दीजिए, इसे bind करने के लिए कहिए, और यह display build करता है। अगर data में 5 events हैं, आपको 5 rows मिलती हैं; अगर 50 हैं, आपको 50 मिलती हैं, आपके code में कोई change के बिना। Control repetition handle करता है तो आपको नहीं करना पड़ता।

Practical

Binding the FestConnect event list to a GridView

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        // 'events' could come from a database; a list is shown here for clarity
        var events = GetEvents();        // e.g. a list of Event objects

        gvEvents.DataSource = events;    // 1) point the control at the data
        gvEvents.DataBind();             // 2) render one row per item
    }
}
// gvEvents is an <asp:GridView> in the markup. It now shows every event.

At a glance

Controlक्या दिखाता हैLayout Control
GridViewएक grid: rows और columns, एक table की तरहBuilt in; sorting और paging support करता है
ListBoxSelectable items की एक scrollable listSimple list; user pick कर सकता है
Repeaterजो भी HTML template आप लिखें, repeatedTotal: आप template supply करते हैं, कोई default नहीं
FormViewएक बार में एक record, आपका templateएक item, fully custom layout

Formula

DataBind() और Per-Item Events

जब तक आप DataBind() call न करें कुछ नहीं दिखता; अकेले DataSource set करना कुछ render नहीं करता। Bind करना याद रखिए (typically if (!IsPostBack) के अंदर, तो grid हर click पर needlessly rebuild नहीं होता)।

जैसे एक control bind होता है, यह data-binding events raise कर सकता है, per item एक। एक GridView का RowDataBound हर row के लिए fire होता है जैसे यह built होती है, आपको इसे customise करने देते हुए: उदाहरण के लिए, एक 'Full' event को red colour कीजिए, या एक date format कीजिए। ये events binding के दौरान individual items adjust करने के लिए आपका hook हैं।

Quiz

आप FestConnect के events को minimal effort के साथ columns, sorting, और paging वाली एक table की तरह दिखाना चाहते हैं। कौन सा control सबसे अच्छा fit होता है?

  1. Repeater, क्योंकि इसमें सबसे ज़्यादा built-in table features हैं
  2. GridView, जो rows और columns को एक grid की तरह render करता है और out of the box sorting और paging support करता है
  3. FormView, क्योंकि यह सारे records को एक grid की तरह दिखाता है
  4. ListBox, क्योंकि यह automatically columns display करता है
Show the answer

GridView, जो rows और columns को एक grid की तरह render करता है और out of the box sorting और paging support करता है

GridView tabular grid control है: यह rows और columns render करता है और इसमें built-in sorting और paging है, तो यह least effort के साथ events की एक table को fit करता है। Option A backwards है: Repeater के पास बिल्कुल कोई built-in layout नहीं है; आपको पूरा template खुद लिखना पड़ता है, जो एक standard table के लिए minimal effort का opposite है। Option C wrong है क्योंकि FormView एक बार में ONE record दिखाता है, इन सबकी एक grid नहीं। Option D wrong है: एक ListBox selectable items की एक single-column scrollable list है, एक multi-column grid नहीं। Control को display के shape से match कीजिए: कई rows का grid -> GridView।

Think first

तो आप GridView की बजाय Repeater कब चुनेंगे?

अगर GridView इतना automatically करता है, Repeater, जो default से आपको कुछ नहीं देता, बिल्कुल exist क्यों करता है? फिर tap कीजिए।

Show the answer

आप एक Repeater तब चुनते हैं जब आपको HTML पर COMPLETE control चाहिए और grid की built-in table structure नहीं चाहिए। एक GridView quick है पर यह अपने खुद के markup वाली एक table render करता है, जो एक spreadsheet-जैसे grid के लिए great है पर limiting है अगर आप चाहें, मान लीजिए, हर event एक styled card की तरह दिखे, या divs की एक custom list, या markup जो एक specific design में fit हो। Repeater exactly वह template render करता है जो आप लिखते हैं, per item एक बार, और कुछ और नहीं: कोई automatic table नहीं, कोई extra tags नहीं। वह freedom point है। Trade-off effort और features हैं: एक Repeater के साथ आप सारी layout खुद लिखते हैं और आपको free sorting या paging नहीं मिलती। तो rule है: least work वाले एक standard data grid के लिए GridView; जब design custom markup demand करे और आप इसे लिखने में खुश हों तब Repeater। FormView एक single record के लिए same idea है। सही tool, सही shape।

Summary

Key takeaways

  • Data binding एक data source को एक control से connect करता है जो automatically हर item display करता है।
  • Pattern दो steps है: control का DataSource set कीजिए, फिर DataBind() call कीजिए; जब तक आप bind न करें कुछ render नहीं होता।
  • GridView built-in sorting और paging वाली rows और columns की एक grid दिखाता है।
  • ListBox selectable items की एक scrollable list है; Repeater आपके लिखे एक fully custom template को per item render करता है; FormView एक बार में एक record को एक custom template के साथ दिखाता है।
  • GridView के RowDataBound जैसे data-binding events per item fire होते हैं, आपको हर row को built होते वक़्त customise करने देते हुए।
  • if (!IsPostBack) के अंदर bind कीजिए तो control हर postback पर needlessly rebuild नहीं होता।
  • Memory hook: DataSource + DataBind() = control आपके लिए हर row draw करता है।

Study this properly

This page is the lesson to read. In Gri-Learn the same topic is a graded deck: the self-checks are scored and your weak topics are tracked. Free to start.

Start this topic

Already have an account? Sign in

More from Introduction to ASP.NET

Gri-Learn · syllabus-mapped B.C.A. lessons in English, Hindi and Gujarati

Data Binding: Grid View, List Box, Data binding Events, Repeater, Form View · .NET Technology (Major-13) · Gri-Learn