عزيز

الأعضاء
  • المساهمات

    81
  • تاريخ الانضمام

  • تاريخ آخر زيارة

السُّمعة بالموقع

0 Neutral
  1. يناسب عنصر التحكم "SelectionList" القوائم الصغيرة كونه لا يدعم عملية التقطيع إلى صفحات بالنسبة للقوائم الطويلة. و لكن يمكن لهذا العنصر إظهار القائمة بشكل قائمة منسدلة أو قائمة عناصر اختيارية "Radio" على المستعرضات التي تدعم هذه العناصر. يعرض عنصر التحكّم قائمة مكونة من عمود واحد كما يدعم إمكانية ربط قيمة مخفية بكل قيمة ظاهرة. يمكنك تحديد هذه القيمة من خلال الواصفة "Value" المرتبطة بالعنصر <item> أو تحديد قيمة الخاصة "DataValueField" في حالة القائمة المرتبطة بمصدر بيانات. تكون صيغة استخدام عنصر التحكم هذا على الشكل: <mobile:SelectionList runat="server" id="id" Alignment="{NotSet|Left|Center|Right}" BackColor="backgroundColor" BreakAfter="{True|False}" Font-Bold="{NotSet|False|True}" Font-Italic="{NotSet|False|True}" Font-Name="fontName" Font-Size="{NotSet|Normal|Small|Large}" ForeColor="foregroundColor" StyleReference="StyleReference" Wrapping="{NotSet|Wrap|NoWrap}" DataMember="dataMember" DataSource="dataSource" DataTextField="DataTextField" DataValueField="DataValueField" SelectType="{DropDown|ListBox|Radio|MultiSelectListBox|CheckBox}" Title="String" OnItemDataBind="itemDataBindHandler" OnSelectedIndexChanged="selectedIndexChangedHandler"> <!-- Optional statically declared list items --> <Item Text="Text" Value="Value" Selected="{True|False}"/> </mobile:SelectionList>
  2. يستخدم عنصر التحكم "PhoneCall" الطلب المباشر للاتصال الهاتفي في حال كان الهاتف المحمول يدعم هذا الخيار. أما في حال دعم هذه الخاصة يظهر عنصر التحكّم هذا وصلة يمكن للمستخدم استخدامها لتفعيل الاتصال أو لإظهار رسالة تنبيه للمستخدم لضرورة الموافقة على تأسيس الاتصال. يبين النص البرمجي التالي صيغة استخدام هذا العنصر و أهم الخصائص و الأحداث التي يوفرها: <mobile:PhoneCall runat="server" id="id" BreakAfter="{True|False}" Font-Name="fontName" Font-Size="{NotSet|Normal|Small|Large}" Font-Bold="{NotSet|False|True}" Font-Italic="{NotSet|False|True}" ForeColor="foregroundColor" BackColor="backgroundColor" Alignment="{NotSet|Left|Center|Right}" StyleReference="styleReference" Text="text" Visible="{True|False}" Wrapping="{NotSet|Wrap|NoWrap}" AlternateFormat="alternateText" AlternateURL="targetURL" PhoneNumber="phoneNumber" SoftkeyLabel="text" Text="text"> innerText </mobile:PhoneCall>
  3. يساعدك هذا العنصر في إظهار ملفات الصور الأمر الذي يُشكّل مشكلة بالنسبة للمطور نظراً لاختلاف وتتفاوت تنسيقات ملفات الصور التي تدعمها التجهيزات المحمولة المختلفة، إضافة إلى الاختلاف بين قدرات عرض شاشات هذه التجهيزات. لذا بجب عليك تأمين ملف الصورة بأكثر من تنسيق و تحديد استجابة كل نوع من التجهيزات لإرسال التنسيق المناسب حسب الجهاز الذي قام بإرسال الطلب. فيما يلي النص البرمجي الذي يوضّح الخصائص و الأحداث التي يقدمها عنصر التحكم "Image": <mobile:Image runat="server" id="id" Alignment="{NotSet|Left|Centre|Right}" BackColor="backgroundColor" BreakAfter=="{True|False}" Font-Bold="{NotSet|False|True}" Font-Italic="{NotSet|False|True}" Font-Name="fontName" Font-Size="{NotSet|Normal|Small|Large}" ForeColor="foregroundColor" StyleReference="StyleReference" Visible="{True|False}" Wrapping="{NotSet|Wrap|NoWrap}" AlternateText="AltText" ImageUrl="masterImageSource" NavigateUrl="targetURL" SoftkeyLabel="softkeyLabel"> Optional DeviceSpecific/Choice construct here. </mobile:Image>
  4. يعتبر عنصر التحكّم "Form" العنصر الخارجي ضمن غرض "MobilePage"، حيث تحتاج إلى صفحة خاصّة لاحتواء عناصر التحكّم الأخرى. بالإضافة إلى قدرة عنصر التحكّم "Form" على احتواء عناصر التحكم الأخرى فهو يستطيع احتواء النص خارج عناصر التحكم المحمولة حيث يمكن تنسيق هذا النص باستخدام التأثيرات الخاصة بالتنسيق. أورد لك فيما يلي صيغة تحتوي معظم الخاصات المتعلقة بعنصر التحكم Form: <mobile:Form runat="server" id="id" Font-Name="fontName" Font-Size="{NotSet|Normal|Small|Large}" Font-Bold="{NotSet|False|True}" Font-Italic="{NotSet|False|True}" ForeColor="foregroundColor" BackColor="backgroundColor" Alignment="{NotSet|Left|Center|Right}" StyleReference="styleReference" Visible="{True|False}" Wrapping="{NotSet|Wrap|NoWrap}" Action="url" Method="{Post|Get}" OnActivate="onActivateHandler" OnDeactivate="onDeactivateHandler" Paginate="{True|False}" PagerStyle-NextPageText="text" PagerStyle-PageLabel="text" PagerStyle-StyleReference="styleReference" Title="formTitle"> Child controls </mobile:Form>
  5. يوفر الغرض "DataTable" مجموعة من الخصائص و الطرق التي تسمح بالتعامل مع كل جدول من جداول غرض Dataset على حدى. من أكثر الطرق استخداماً هي الطرق "Clear" و "AcceptChanges" و "RegectChanges" و هي مطابقة لتلك التي يدعمها الغرض "DataSet" إلا أنها تُطبّق فقط على جدول وحيد هو الجدول الذي يؤشّر إليه الغرض "DataTable". كما أن هناك مجموعة من الطرق الأخرى التي تسمح بالتعامل مع محتويات الجدول وهي : الطريقة NewRow والتي تُنشئ صف في الجدول حيث يتم إدخال القيم إلى الصف باستخدام النص البرمجي.الطريقة Select و التي تقوم بإعادة مجموعة من الأسطر التي تطابق تعبير تصفية معيّن.مثال: <%@ Page Language="vb" %> <%@ import Namespace="System.Data" %> <%@ import Namespace="System.Data.OleDb" %> <script runat="server"> Sub Page_Load(sender As Object, e As EventArgs) 'declarations Dim mycon As OleDbConnection Dim mycmd As OleDbCommand Dim mydap As OleDbDataAdapter Dim mydst As DataSet mycon = New OleDbConnection( _ "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=c:\myDb.mdb") mydap = New OleDbDataAdapter ( _ "select col1,col2 from myTable", _ mycon) mydst = New DataSet() mydap.Fill(mydst,"col2") mygrid.DataSource = mydst.Tables("col2") mygrid.DataBind End Sub
  6. يقدّم الغرض "Dataset" مجموعة من الطرق التي يمكن استخدامها للتعامل مع محتويات الجداول أو للتعامل مع العلاقات القائمة فيما بينها مثل عمليات مسح محتوى غرض "DataSet" أو عملية دمج محتويات أكثر من غرض DataSet، وهنا لدينا طريقتين: الطريقة Clear : تُزيل جميع البيانات المخزنة في الغرض DataSet وذلك بتفريغ جميع العناصر التي تكوّن عملية تدمير الغرض وإعادة إنشاؤها.الطريقة Merger: تدمج هذه الطريقة محتوى غرض DataSet مع محتوى غرض Dataset آخر منتجةّ غرض DataSet يحتوى جميع البيانات من كلا الغرضين.مثال: Dim connStr As String = "Provider=VFPOLEDB.1;Data Source=“ & _ “C:\SAMPLES\DATA\TESTDATA.DBC" Dim strSQL As String = "SELECT * FROM Products" Dim oda As New OleDbDataAdapter(strSQL, connStr) Dim ds As New DataSet() Dim dr As DataRow oda.Fill(ds, "ProductInfo") For Each dr In ds.Tables("ProductInfo").Rows lstDemo.Items.Add(dr("Prod_Name").ToString) Next dr ' Want to bind a Windows Form grid? It's this easy: dgdDemo.DataSource = ds.Tables("ProductInfo")
  7. هناك طريقتين لإسقاط أو وصل حقل محدد من كل صف في مصدر البيانات إلى خصائص عنصر تحكم. يعتمد اختيار الطريقة على عنصر التحكّم الذي نقوم بربطه: إذا كان عنصر التحكم يدعم القوالب يمكنك التصريح عن القالب لكل صف سيتم إظهاره من قبل عنصر التحكم.إذا كان عنصر التحكم لا يدعم القوالب نستطيع إسناد الحقول في مصدر البيانات إلى خصائص عنصر التحكم بضبط الخصائص أثناء عمل البرنامج.تكون عناصر التحكم في "ASP.net" التي تدعم القوالب هي: DataGrid و DataList و Repeater و بذلك يمكنك التصريح من قالب ووضع تعليمات ربط البيانات ضمنه. Key:<%# Container.DataItem.Key%>أو Value:<%Container.DataItem.Value%>
  8. يعتمد مبدأ ربط البيانات من جهة الخادم على جعل "ASP.net" تندرج تحت قيمة أو عدة قيم من البيانات على الصفحة أو ضمن عنصر التحكّم تستخدم الصّيغة الأساسية بنية مشابهة لتلك المستخدمة في كتلة النص البرمجي من جهة الخادم باستخدام إشارة # كدلالة على أن الصيغة هي صيغة ربط بيانات. <%# name-of-data-source %>لا يمكنك وضع النص المراد تنفيذه ضمن هذه الكتلة مع أنها تبدو ككتلة نص برمجي من جهة الخادم و لكنها ليست كذلك و لا يمكنك استخدام التعبيرات الخاصة بربط البيانات ضمن هذه الكتلة. الحالة الأولى "ربط بيانات قيمة واحدة": عندما تقوم بربط عنصر تحكم إلى قيمة وحيدة مثل أحد الخصائص، أو إحدى الطرائق أو أحد التعبيرات. يمكنك استخدام أحد الصيغ البسيطة التالية: <%# property-name %> أو <%# method-name (parameter1, parameter2,…) %> أو <%# expression%>الحالة الثانية "ربط بيانات قيم متكررة": تكمن الميزة الحقيقية في استخدام القيم المرتبطة في كون كتلة ربط البيانات قابلة للاستخدام مع عناصر تحكّم أخرى و يمكن الحصول على قيمة أحد العناصر عن طريق عنصر تحكّم أخر. سأورد لك مثلاً عن إمكانية ربط عنصر تحكم "LABLE" إلى عنصر تحكم "TextBox" و ذلك بإسناد الخاصة "TEXT" لعنصر التحكّم "TextBox" كقيمة للخاصة "TEXT" في عنصر تحكم "LABLE". <form runat="server"> <ASP:TextBox id="MyTextBox" runat="server" /> <ASP:Label id="MyLabel" Text="<%# MyTextBox.Text %>" runat="server" /> <input type="submit" /> </form> <script language="VB" runat="server"> Sub Page_Load() DataBind() End Sub </script>
  9. يقوم هذا العنصر بإظهار قائمة بالأخطاء عن إرسال الصفحة. سأورد لك في المثال التالي كيفية عمل عنصر التحكّم هذا. في البداية قمنا بتحديد ترويسة ملخّص الأخطاء الذي سوف يظهره عنصر التحكم و ذلك بإسناد قيمة للخاصة "HeaderText" و من ثمّ قمنا بإسناد القيمة "True إلى الخاصة "ShowSummary" بحيث يتم إظهار قيمة الخاصّة "ErrorMessage" المرتبطة بكل عنصر تحكم "يجري التحقق منه" في حال فشل الاختبار على هذا العنصر. <asp:ValidationSummary id="valSummary" runat="server" HeaderText="<b>The following errors were found:</b>" ShowSummary="True" DisplayMode="List" />تمكّن الخاصة "DisplayMode" من اختيار طريقة إظهار رسائل الخطأ بحيث يمكن أن نسند إلى هذه الخاصة القيم التالية: List,BulletList,SingleParagraph و يمكننا أيضاً استخدام الخاصة "ForColor" لضبط لون الرسالة.
  10. يستخدم عنصر التحكّم هذا لمقارنة قيمة مدخلة مع قيمة عنصر تحكّم آخر أو قيمة ثابتة. نلاحظ في المثال التالي إضافة حقل إدخال نصّي جديد و إسناد القيمة "txtCopare" إلى الخاصة "ControlToValidate" و القيمة "txtRequired" إلى الخاصة "ControlToCompare" حيث تحدد هاتان الخاصتان أسماء عناصر التحكم التي يراد التحقق من تطابق مدخلاتها. تُحدد الخاصة "Operator" نوع المقارنة بين قيمتي عنصري التحكّم المقارنين و يمكن أن تأخذ إحدى القيم الثلاثة التالية: Equal greaterThan LessThanOrEqual مثال: The Same Value Again: <input type="text" id="txtCompare" size="20" runat="server" /> <asp:CompareValidator id="valCompare" runat="server" ControlToValidate="txtCompare" ControlToCompare="txtRequired" Operator="Equal" ErrorMessage="* You must enter same value in the second textbox" Display="dynamic"> * </asp:CompareValidator>
  11. يضطر المستخدم عادةً إلى إعادة ملء محتوى نموذج مجدداً بعد اختفاء عناصره نتيجة الخطأ في ملء أحد المعلومات. و قد كانت هذه الصفة مرافقة للعمل على نسخة "ASP" حيث كانت قيم عناصر النموذج تختفي بعد إرساله و كان لا بد للمبرمج من كتابة نص برمجي لمعالجة هذه الحال. أما في "ASP.net" فيكون الإبقاء على محتوى النموذج مفعّل بصورة تلقائية ما لم يحدد المبرمج إلغاءه بصورة قسرية ضمن الصفحة بالعبارة: <%@ Page EnableViewState="false" %>يجب وضع هذه العبارة في بداية برمجة صفحة "ASP.net" أو يمكن إيقاف الخاصة لأحد العناصر فقط بتحديد "EnableViewState="false لهذا العنصر فقط. يمكن أن تستخدم هذه الحالة مثلاً عندما يكون العنصر يخص كلمة المرور مثلًا. مثال: <script runat="server"> Sub submit(sender As Object, e As EventArgs) lbl1.Text="Hello " & txt1.Text & "!" End Sub </script> <html> <body> <form runat="server"> Your name: <asp:TextBox id="txt1" runat="server" EnableViewState="false" /> <asp:Button OnClick="submit" Text="Submit" runat="server" /> <p><asp:Label id="lbl1" runat="server" /></p> </form> </body> </html>
  12. عند بناء نموذج تفاعلي يلزمك في العديد من الحالات تفعيل عملية إرسال النموذج لدى اختيار عنصر من قائمة أو تفعيل مربع اختيار، بحيث يُسمح للمخدّم بتحديث الصفحة عند الاستجابة لخيارات المستخدم. كانت هذه العملية تتم سابقاً في "ASP" بواسطة حدث من جهة الزبون مرتبط بحدث اختيار أو تعديل حالة كحدث "OnChange" كما في الشيفرة التالية: <script language="javascript"> <!-- function __doPostBack(eventTarget, eventArgument) { var theform = document.ctrl0; theform.__EVENTTARGET.value = eventTarget; theform.__EVENTARGUMENT.value = eventArgument; theform.submit(); } <input id="MyControl" type="checkbox" name="MyControl" onclick="javascript:__doPostBack('MyControl','')" /> <input type="hidden" name="__EVENTTARGET" value="" /> <input type="hidden" name="__EVENTARGUMENT" value="" /> // --> أما في "ASP.net" فيمكن إسناد القيمة "True" إلى الخاصة "AutoPostBack" حتى يجري إرسال الصفحة إلى المخدم بعد كل تعديل على عنصر التحكم الذي تم تعيين هذه الخاصة له.
  13. يشبه شكل نمط أزرار الاختيار شكل قنوات الراديو حيث يمكن اختيار خيار واحد فقط من الحقول التي تنتمي إلى مجموعة واحدة.تعتمد القيمة التي يعيدها النموذج كما هي الحال مع مربعات التحقق على القيمة المسندة للواصفة "Value".يمكن تفعيل حقل التحقق تلقائياً عند إظهار النموذج و ذلك عبر إضافة الواصفة "Checked" وإعطائها القيمة "Checked" كما في الشيفرة التالية:<input type="radio" name=”myRadio” vaue=”option1” checked=”checked” /> first option<br> <input type="radio" name=”myRadio” vaue=”option2” /> second option <br> <input type="radio" name=”myRadio” vaue=”option3” /> third optionيظهر عند تنفيذ الشيفرة السابقة إرسال القيمة "first option".
  14. تُعبّر قيمة الواصفة "Target" عن اسم الإطار الهدف الذي ستظهر فيه الإجابة بعد إرسال النموذج فتستخدم عند الحاجة لبيانات خاصة بنموذج بحث متوضع ضمن إطار ما في صفحة "HTML" و عند الحاجة لاسترجاع نتيجة البحث ضمن إطار آخر. تأخذ "Target" القيم الأربعة التالية : "blank_" : تقوم بإعادة خرج النموذج في نافذة جديدة بدون اسم."self_": تقوم بإعادة خرج النموذج ضمن نفس الإطار الذي يحوي النموذج."partent_":تقوم بإعادة خرج النموذج ضمن الإطار الأب للإطار الذي يحوي النموذج."top_": تقوم بإعادة خرج النموذج ضمن الإطار الرئيسي مع إزالة كل الإطارات الأخرى.مثال: <form action=”SomeThing.aspx” method=”POST” Target=”_blank” >
  15. تقدّم كل من أغراض "OleDbDataAdapter" و "SqlDAtaAdapter" مجموعة من الطرق للعمل مع أغراض "DataSet" التي تطبق عليها و هناك ثلاثة طرق لاستخدامها: الطريقة "Fill" حيث تقوم بتنفيذ الأمر SelectCommand لتأهيل الغرض DataSet بالبيانات من مصدر البيانات.الطريقة "FillSchema" حيث تستخدم الأمر SelectCommand لاستخلاص البينة الهيكلية لجدول من مصدر بيانات و تقوم بإنشاء جدول فارغ في غرض DataSet مع جميع القيود التي تحددها تلك البينة.الطريقة "Update" حيث تقوم باستدعاء الأمر InsertCommand و UpdateCommand و DeleteCommand بحيث يجري تحديث هذه البيانات ضمن مصدر البيانات DataSet.مثال: Dim connStr As String = "Provider=VFPOLEDB.1;Data Source=“ & _ “C:\SAMPLES\DATA\TESTDATA.DBC" Dim strSQL As String = "SELECT * FROM Products" Dim oda As New OleDbDataAdapter(strSQL, connStr) Dim cmdInsert As New OleDbCommand(“INSERT INTO Products” & _ “(product_id, prod_name) VALUES (10,’car’)”) oda.InsertCommand = cmdInsert