فرض کنید می خواهیم لیست محصولات مورد نظر کاربر را دریافت کنیم. برای هر محصول یک TextBox و یک Label در نظر می گیریم چون در ابتدا نمی دانیم تعداد این محصولات چند است می توانیم برای یک مورد کنترل TextBox قرار دهیم و با قرار دادن دکمه ای بنام AddField به کاربر این امکان را می دهیم تا بتواند یک TextBoxو Label متناظر با آن را برای ورود محصول بعدی به فرم اضافه کند . برای اضافه کردن کنترل ها به فرم از یک کنترل PlaceHolder استفاده می کنیم و کنترل ها را به آن اضافه می نماییم (خود این کنترل در برنامه قابل رویت نیست و عملا کنترل ها به فرم اضافه میشوند)
اضافه کردن کنترل به PlaceHolder بسیار ساده است کافیست کد زیر را اجرا کنیم:
TextBox text = new TextBox();
PlaceHolder1. Controls. Add(text);
بدین ترتیب میتوانیم یک Label نیز اضافه کنیم:
LiteralControl literal = new LiteralControl();
literal.Text = "
New Poroduct";
PlaceHolder1.Controls.Add(literal);
متن کنترل label مذکور شامل تگ های
ومیباشد که بترتیب باعث رفتن به خط بعد و Bold کردن محتوی پس از خود میشوند. عبارت Productبه همراه شماره محصول بصورت Bold و در خط بعد نمایش داده میشود (i شمارنده است).
برای نگه داشتن حساب تعداد کنترل ها متغیری بنام Count در ViewState ایجاد می کنیم که مقدار اولیه 1 دارد و بدین معنی است که در ابتدا یک Text Box برروی فرم قرار دارد. (استفاده از متغیر Count بدین منظور است که با هر بار Submit کنترل هایی که بصورت پویا اضافه شده اند در Load بعد از بین میروند و باید مجددا ایجاد شوند بنابراین باید تعداد آنها را نگه داشت).
بدین ترتیب در تابع Page_Load در وضعیت IsPostBack == True مقدارCount را بازیابی کرده با یک حلقه for کنترل های دوم به بعد را ایجاد می کنیم همچنین در تابع رویداد کلیک برای دکمه AddField ابتدا مقدار Count را بازیابی سپس یکی به آن اضافه کرده و مجددا در Count ذخیره می کنیم پس از آن یک TextBox جدید به همراه Label متناظرش که شماره ی آن برابر مقدار اخیر Count است ایجاد می کنیم (در Load بعدی، این کنترل به همراه سایر کنترل های ایجاد شده مجددا درون حلقه ی for تولید می شود.
کنترل GridView :
این کنترل جهت نمایش داده های یک جدول از پایگاه داده به کار می رود. در اینجا می خواهیم از تکنیک Binding جهت نمایش اطلاعات در این کنترل استفاده کنیم. این تکنیک به ما امکان می دهد که بدون کد نویسی یک کنترل را مستقیما به یک منبع داده (مثلا یک جدول) متصل کنیم تا داده های آن بطور اتوماتیک نمایش داده شوند . این کنترل از امکان Binding دو طرفه پشتیبانی می کند بدین معنی که می توان با تغییر داده ها درون کنترل این تغییرات را به پایگاه داده نیز منتقل کرد.
جهت استفاده از تکنیک Binding باید از یک منبع داده استفاده شود قبل از اینکه منبع داده را به کار ببریم لازم است که تغییری در یک جدول از پایگاه داده Northwind ایجاد کنیم. برای این کار باید ابتدا یک اتصال ایجاد کنیم.
ایجاد اتصال به پایگاه داده Northwind:
گزینه Server Explorer از منوی Viewرا انتخاب کرده و روی Data Connections راست کلیک کرده گزینه Add Connection را انتخاب می کنیم. در صورت نمایش فرم Choose Data Source گزینهMicrosoft SQL Server را انتخاب کرده و OK می کنیم. در قسمت Server Name در صورت استفاده از SQL Server 2000 عبارت (local) و در صورت استفاده از SQL Server 2005 عبارت \sqlexpress(local) را تایپ کرده از لیست Select or enter a database name گزینه Northwind را انتخاب و سپس Ok می کنیم.
(توجه: در SQL Server 2005 پایگاه داده Northwind موجود نمی باشد و باید آن را نصب کرد یا یک پایگاه داده ایجاد نموده عملیات گفته شده را با تغییراتی بر روی پایگاه داده جدید اعمال کرد. جهت نصب پایگاه داده Northwind به آدرس www.MyProjects.ir مراجعه گردد.)
ایجاد تغییر در جدول Customers:
اتصال ایجاد شده را باز کرده برروی علامت + در کنار Tables کلیک و بر روی جدول Customers دابل کلیک می کنیم. ستون جدیدی به این جدول اضافه می کنیم بنام ShowCity از نوع bit و بدون قابلیت Allow Nulls. همچنین در قسمت پاﺋین صفحه روبروی Default Value or Binding مقدار 1 را می نویسیم. با این کار مقدار این فیلد برای تمام رکوردهای موجود جدول برابر True قرار داده می شود. با راست کلیک بر روی جدول Customers و انتخاب ShowTableData داده های این جدول را مشاهده می کنیم . برای دو رکورد اول مقدار فیلد ShowCity را برابر False قرار می دهیم . این فیلد را بعدها به عنوان خاصیت Enabled از ستون City در کنترلGridView بکار میبریم (در واقع این فیلد را با این خاصیتBind می کنیم). بدین ترتیب نام شهر برای دو رکورد اول بصورت Disabled (غیر فعال) نمایش داده خواهد شد.
ایجاد و پیکربندی منبع داده:
یک کنترل SqlDataSource را بر روی فرم قرار می دهیم (این کنترل در دسته Data قرار دارد). بر روی آیکون > کنار کنترل کلیک کرده گزینه Configure Data Source… را انتخاب می کنیم. از لیست ظاهر شده اتصالی را که ایجاد کردیم انتخاب کرده از صفحه بعد گزینه دوم (specify columns from a table or view) را انتخاب و از لیست موجود نام جدول Customers را انتخاب می نماییم و در کادر زیرین گزینه[*] (تمام ستونها) را انتخاب می کنیم. سپس با کلیک برروی Advanced گزینه اول را انتخاب می کنیم (این گزینه جهت ایجاد قابیلت تغییر در داده ها بکار میرود) و با کلیک برروی Next و سپس Finish کار را به پایان می رسانیم.