مشخصات مقاله
-
2586
-
0.0
-
6946
-
0
-
0
آموزش کنترل های سرور – ASP.NET
کنترل های سرور – ASP.NET
Control ها در واقع یکی از اجزای اصلی تشکیل دهنده رابط گرافیکی کاربری (graphical user interface) هستند، که شامل textboxها (کادر متن)، check boxها (کادر تیک)، buttonها (دکمه)، listboxها، label ها و چندین ابزار مختلف دیگر می شود. با استفاده از این ابزار، کاربر قادر خواهد بود داده های مورد نیاز را وارد کرده و انتخاب کند، همچنین تنظیمات دلخواه خود را اعمال کند.
Control ها برای اهداف دیگری نیز بکار گرفته می شوند که از میان آن ها می توان به اعتبار سنجی، دسترسی به داده، امنیت، ایجاد master pageها (صفحات الگو) و دستکاری داده اشاره کرد.
ASP.NET از پنج نوع مختلف web control (کنترل وب) بهره می گیرد که به شرح زیر می باشند :
- HTML controls
- HTML Server controls
- ASP.NET Server controls
- ASP.NET Ajax Server controls
- User controls and custom controls
کنترل های سرور بیش از دیگر کنترل های ذکر شده در تکنولوژی ASP.NET کاربرد داشته و در واقع جزء کنترل های اولیه و اصلی آن می باشند. کنترل های سرور را می توان به ترتیب زیر گروه بندی کرد:
- Validation controls – این کنترل ها به منظور اعتبار سنجی ورودی کاربر (user input) بکار گرفته شده و با اجرای اسکریپت های سمت سرویس گیرنده (client-side) کار می کنند.
- Data source controls – این کنترل ها داده را به data source های متفاوتی متصل (bind) می کند.
- Data view controls کنترل های نام برده در حقیقت listها (فهرست ها) و tableها (جداول) هستند که برای اینکه نمایش داده شوند از data source ها به داده متصل (bind) شوند.
- Personalization controls این کنترل جهت شخصی سازی و تنظیم (personalization) صفحه مطابق با تنظیمات دلخواه کاربر و بر مبنای اطلاعات کاربر بکار گرفته می شود.
- Login and security controls کنترل مذکور در واقع کاربر را احراز هویت می کند(authentication).
- Master pages صفحات الگو یک layout (طرح کلی) و interface (رابط) همسان و یکپارچه ارائه می دهند که سرتاسر برنامه ی مورد نظر بکار فته می شود.
کلاس CSS را هنگامی که control غیر فعال شده است، به المان render شده ی HTML اعمال می کند.
این خاصیت از نوع EventHandlerList هست که با استفاده از آلگوریتم جستجو خطی (linear search algorithm) ورودی (entry) های مورد نظر را در فهرست delegate ها پیدا می کند.
این خاصیت در صورتی که نمونه ی کلاس WebControl دارای key-value pair باشد، true برمی گرداند.
ارجاعی (reference) به نمونه ی Page که میزبان (دربردارنده ی) کنترل سرور مورد نظر می باشد باز می گرداند.
ارجاعی به control پدر server control در سلسله مراتب page control برمی گرداند.
توضیح: هر زمان که صفحه ای درخواست می شود، در واقع سلسله مراتبی از کنترل های سرور بر روی آن صفحه ساخته می شود. این خاصیت به شما امکان می دهد کنترل پدر server control جاری را در آن سلسله مراتب پیدا کرده و مشخص کنید.
خاصیت site یک شئ Component را به یک شئ container متصل کرده و امکان ارتباط بین این دو را فراهم می آورد. همچنین راهی برای مدیریت component ها توسط ظرف (container) مورد نظر ایجاد می کند.
شناسه ی منحصر بفرد که به صورت سلسله مراتبی برای server control تعریف شده اند را برمی گرداند.
یک دیکشنری از اطلاعات مربوط به وضعیت (state) که وضعیت view های یک کنترلگر سرور را سرتاسر چندین request برای یک صفحه ذخیره و بازیابی می کند را برمی گرداند.
Navigation controls این کنترل ها در پیمایش کمک شایانی ارائه می دهند. از میان این کنترل ها می توان به منوها و نمایش درختی (tree view) اشاره کرد.
Rich controls ویژگی ها و امکانات فراوانی را ارائه می دهند، از جمله ی آن ها می توان از AdRotator، FileUpload و Calendar control سخن بمیان آورد.
ساختار نحوی (syntax) استفاده از کنترل های سرور به ترتیب زیر می باشد:
< asp:controlType ID ="ControlID" runat="server" Property1=value1 [Property2=value2] / >
Visual studio با ارائه ی ویژگی ها و امکانات زیر به کدنویسی هرچه صحیح تر و عاری از خطا کمک می کند:
- کشیدن و جای گذاری (drag & drop) کنترل ها در design view
- قابلیت IntelliSense که خاصیت ها (property) را نشان داده و به صورت خودکار تکمیل می کند
- پنجره ی properties که امکان تنظیم مقادیر property را به صورت مستقیم فراهم می کند
پنجره ی properties که امکان تنظیم مقادیر property را به صورت مستقیم فراهم می کند
خواص server control
کنترل های سرور ASP.NET از کلاس WebControl مشتق شده و همچنین تمامی خاصیت ها، رخدادها و متدهای این کلاس را به ارث می برد.
خود کلاس WebControl و برخی دیگر از server control هایی که به صورت بصری اجرا نشده و نمایش داده نمی شوند (render) در واقع از کلاس System.Web.UI.Control مشتق می شوند، به عنوان نمونه می توان PlaceHolder control و XML control را نام برد.
Server control های ASP.NET کلیه ی خواص (property)، رخدادها (events) و متدهای کلاس WebControl و System.Web.UI.Control را به ارث می برد.
جدولی که زیر مشاهده می کنید این خواص به ارث گرفته شده که بین کنترل های سرور مشترک می باشد را به نمایش می گذارد :
این تابع مقدار ClientID به صورت موقت ذخیره (cache) شده را روی NULL تنظیم می کند(مقدار null را به آن تخصیص می دهد).
این متد زمانی بکار می رود که اطلاعات control-state فرزند که در control state کنترل پدر نوشته شده با ایجاد کنترل های فرزند جدید بازنویسی (override) می شوند.
این متد اول مقدار خاصیت ChildControlsCreated را چک می کند، چنانچه این مقدار false بود در آن صورت متد CreateChildControls صدا زده می شود.
Shallow copy :
در فرایند shallow copying، B تمامی مقادیر فیلد (field value) A را کپی می کند. اگر مقدار فیلد یک آدرس حافظه باشد، تنها آدرس حافظه را دانلود می کند و اگر مقدار فیلد یک نوع اولیه (primitive type) باشد در آن صورت مقدار نوع اولیه را کپی می کند.
اکنون نگاهی به تنها یکی از کنترل server-side فوق می اندازیم که یک کنترل نمایش درختی (control tree view) می باشد. یک کنترل tree view در واقع زیر کنترل های پیمایش (navigation control) نمایش داده می شود. کنترل های پیمایش عبارتند از: کنترل Menu و کنترل SiteMapPath.
یک کنترل tree view در صفحه ایجاد کنید. اکنون Edit Nodes... را از میان task ها انتخاب کنید. هر یک از گره ها (node) را همان گونه که تصویر زیر نمایش می دهد با استفاده از Tree view node editor ویرایش کنید.
پس از ایجاد گره ها (node)، کنترل نمایش درختی (در design view) به صورت زیر در خواهد آمد:
task AutoFormat... به شما امکان می دهد tree view را به صورتی که تصویر زیر نمایش می دهد قالب بندی (format دهی) کنید:
یک label control و textbox control به صفحه اضافه کرده و آن ها را به ترتیب lblmessage و txtmessage نام گذاری کنید.
اکنون کدهای لازم را می نویسید تا زمانی که روی یک گره ی (node) معین کلیک شد، کنترل label متن node را نشان دهد و text boxنیز تمامی گره های فرزند (child node) را در خود به نمایش بگذارد.
Code behind :
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
namespace ServerControl
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
txtmessage.Text = " ";
}
protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
{
txtmessage.Text = " ";
lblmessage.Text = "Selected node changed to: " + TreeView1.SelectedNode.Text;
TreeNodeCollection childnodes = TreeView1.SelectedNode.ChildNodes;
if (childnodes != null)
{
txtmessage.Text = " ";
foreach (TreeNode t in childnodes)
{
txtmessage.Text += t.Value;
}
}
}
}
}
صفحه را اجرا کرده تا نتیجه را مشاهده کنید. حال خواهی دید که باز کردن (بسط دادن) گره ها و بستن (جمع کردن) آن ها امکان پذیر می باشد.