چگونگی ايجاد پارامترها توسط کنترل های سرور داده
هنگامی که شما يک کنترل وب همانند GridView , FormView و يا DetailsView را با يک کنترل
سرور داده به کار می بريد ، کنترل وب می تواند نام و مقادير پارامترهای استفاده شده
را بر حسب * Bound Field های خود به کنترل سرور داده ارسال
کند . سپس کنترل سرور داده نام و مقادير پارامترهای دريافتی را با هم ترکيب کرده و
در مجموعه پارامترهای لازم برای عمليات های Select يا Update استفاده می کند .
Bound Field : کنترل های وب مانند GridView يا FormView اطلاعات
دريافتی را به صورت جدول وار در سطرها و ستون ها نمايش می دهند . به هر يک از خانه
های اين جدول ها ، يک Bound Field گفته می شود ، که نوع آن بايستی متن ( Text ) باشد
. در واقع هر فيلد در رکورد ، يک Bound Field است .
ديکشنری های ارسال شده به کنترل سرور داده :
هنگامی که يک کنترل وب ، عملی مثل Select يا Update را از کنترل سرور داده درخواست
می کند ، به همراه آن يک يا چند مجموعه IDictionary که شامل نام و مقادير پارامترهای
ارسالی برای آن عمل داده ای است را به کنترل سرور داده ارسال می کند . اين ديکشنری
ها برای هر پارامتر شامل يک جفت اطلاعات نام / مقدار ( Name / Value ) هستند
، که کنترل وب نام و مقادير آنها را از کنترل های فرزند و يا کنترل های متصل به خود
استخراج می کند .
برای مثال اگر يک کنترل وب را در حالت Edit Mode قرا بدهيد ، فيلدهای اطلاعاتی آن به
صورت کادر متن يا کادر کشویی در می آيند . کنترل وب اطلاعات اين کنترل ها به همراه
نام فيلد آنها را پس از ويرايش توسط کاربر ، در قالب يک مجموعه به کنترل وب ارسال می
کند . همچنين برای اعمالی مانند Update يا Delete ، کنترل وب ممکن است يک ديکشنری خاص
را که حاوی اطلاعات اصلی رکوردها ( يعنی اطلاعات رکورد قبلا از آنکه ويرايش يا حذف
شود ) می باشد ، را به کنترل وب ارسال کند .
جفتن های نام / مقدار برای پارامترها از طريق ديکشنری های زير به کنترل
های سرور داده ارسال می شوند :
- مجموعه مقادير ( Values ): اين ديکشنری برای يک عمل ورود اطلاعات
جديد ( Insert ) ارسال شده و شامل جفت نام / مقدار برای يک رکورد جديد است . مجموعه
نام فيلدها و مقادير آنها از کنترل های فرزند کنترل وب که در يک مجموعه InsertItemTemplate
قرار داشته و يا فيلد های يک کنترل DetailsView که خاصيت InsertVisible آن بر روی مقدار
True تنظيم شده است ، استخراج می شود .
- مجموعه کليدها ( Keys ) : اين مجموعه برای عمليات های ويرايش ( Update ) و يا
حذف ( Delete ) داده ، ارسال شده و شامل کليد اصلی و يا کليد فرعی برای رکوردی در جدول
داده هاست که کنترل وب مورد نظر در حال ويرايش و يا حذف آن است . در واقع اين مجموعه
آدرس رکوردی که قرار است حذف و يا ويرايش شود را به کنترل سرور داده ارسال می کند .
اگر امکان ويرايش کليدها نيز وجود داشته باشد ، اين مجموعه شامل مقادير اصلی کليد رکورد
قبل از اينکه ويرايش شود ، نيز هست . هنگامی که يک کنترل وب ،اطلاعات ارسالی از طرف
يک کنترل داده را رديافت می کند ، آنها را در حافظه * ViewState
خود نگهداری می کند و در زمانی که عمليات Update و يا Delete را انجام می دهد ، مجموعه
کليد های دريافتی را با اطلاعات موجود در حافظه ViewState خود تلفيق می کند . اگر خاصيت
ViewState کنترل وب مورد استفاده ، بر روی مقدار False تنظيم شده باشد ، اطلاعات مجموعه
کليدها به تنهایی در کنترل وب استفاده شده و قبلا اطلاعاتی در حافظه ViewState آن ذخيره
نشده است ، که با مجموعه کليدها تلفيق شود .
* حافظه ViewState : اين حافظه يکی از خواص برخی از کنترل های
ASP.NET است ، که اطلاعات مختلفی از جمله اطلاعات سرور ، مقادير داده ها و پارامترهای
ارسالی و ... را در خود نگهداری کرده و می توان آنها را بعدا مورد استفاده قرار داد
. برای فعال سازي اين حافظه بايد خاصيت EnableViewState کنترل را بر روی مقدار True
تنظيم کرد .
- مجموعه مقادير جديد ( New Values ) : اين مجموعه برای يک عمل Update ارسال می
شود و شامل جفت های نام / مقدار جديد برای رکوردی است که می خواهد ويرايش شود . اين
مجموعه داده های جديدی را که بايد بهع منبع داده ای ارسال شود را نگهداری می کند .
نام فيلدها و مقاديرشان برای مجموعه New Values از کنترل های فرزند کنترل وب که در
مجموعه EdititemTemplate و یا bound Field های يک کنترل DetailsView که خاصيت ReadOnly
آن روی مقدار False تنظيم شده است ، استخراج می شود .