اذهب إلى المحتوى

Lujain Maaz

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

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

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

  • عدد الأيام التي تصدر بها

    27

إجابات الأسئلة

  1. إجابة Lujain Maaz سؤال في كيف أطبّق تأثير حركي Transform على عنصر في ويندوزفون؟ كانت الإجابة المقبولة   
    التأثيرات الحركية في ويندوز فون لها عدة أنواع منها تحريك Translate ومنها دوران Rotate، لتطبيق تأثير حركي على عنصر نقوم بتحديد الخاصية RenderTransform وبالتالي تحديد الخاصية TranslateTransform التي تعمل على تحريك العنصر بشكل مستقيم إما على المحور X أو المحور Y أي بشكل عمودي أو أفقي.
    لكن ليتم تطبيق التأثير الحركي علينا إنشاء StoryBoard لتحديد نوع التأثير animation الذي سيطبق على خاصية التحريك Translate.
    لنفرض أنه لدينا عنصر ellips ونريد عند الضغط عليها أن تتحرك للأسفل باتجاه Y ومن ثم تعود لمكانها، التحريك إذن يعتمد على تغيير قيمة Y للعنصر أي سنقوم بإنشاء DoubleAnimation في الـStoryboard وتحديد الخاصية Y في StoryBoard.TargetProperty ومن ثم قيمتها في في الخاصية To.
    الآن في الخاصية Storyboard.TargetName نكتب المعرف x:Name الخاص TranslateTransform ليتم تطبيق التأثير animation عليه، مثال:
    إنشاء Ellips وStoryboard في الخاصية Resource للـ Ellips:
    <Ellipse Fill="Red" HorizontalAlignment="Left" Height="100" Margin="209,43,0,0" Grid.Row="1" Stroke="Black" VerticalAlignment="Top" Width="100" RenderTransformOrigin="-3.386,0.383" ManipulationStarted="Ellipse_ManipulationStarted"> <Ellipse.Resources> <Storyboard x:Name="myStoryBoard"> <DoubleAnimation Storyboard.TargetName="traslateTrans" Storyboard.TargetProperty="Y" AutoReverse="True" To="400" Duration="0:0:0.5"></DoubleAnimation> </Storyboard> </Ellipse.Resources>تحديد الخاصية RenderTransform في العنصر Ellips
    <Ellipse.RenderTransform> </Ellipse.RenderTransform>تحديد نوع التحريك في الخاصية RenderTransform وهو TranslateTransform
    <Ellipse.RenderTransform> <TranslateTransform x:Name="traslateTrans"></TranslateTransform> </Ellipse.RenderTransform>في الحدث ManipulationStarted للـEllips نكتب:
    private void Ellipse_ManipulationStarted(object sender, System.Windows.Input.ManipulationStartedEventArgs e) { myStoryBoard.Begin(); }عند التشغيل

    عند الضغط على الكرة

    وثم تعود لمكانها

    تطبيق تأثير Animation على عنصر في ويندوز فون
  2. إجابة Lujain Maaz سؤال في كيف أنسخ مصفوفة إلى مصفوفة أخرى في C#؟ كانت الإجابة المقبولة   
    توفر الدالة Array.Copy() طريقة لنسخ مصفوفة إلى مصفوفة أخرى عن طريق تحديد المعاملين 2 arguments وهما المصفوفة المصدر source والمصفوفة destination وتحديد المعامل الثالث وهو طول المصفوفة التي نريد نسخها.
    لنقم بعمل مثال وإنشاء مصفوفتين وتعبئتهما بمجموعة عناصر ثم نسخ المصفوفة الثانية للمصفوفة الأولى ومن ثم طباعة قيمة المصفوفة الأولى قبل وبعض النسخ لمقارنة المحتويين:
    static void Main(string[] args) { String [] arr1 = {"1","2","3","4","5"}; String [] arr2 = {"A","B","C","D","E"}; Console.WriteLine("before copy:"); for (int i = 0; i < arr1.Length; i++) { Console.Write(arr1[i] + " "); } Array.Copy(arr2, arr1,arr1.Length); Console.WriteLine("\nafter Copy:"); for (int i = 0; i < arr1.Length; i++) { Console.Write(arr1[i]+" "); } Console.ReadLine(); }
     
  3. إجابة Lujain Maaz سؤال في ما هو الفرق بين .remove و .empty و .detach في Javascript؟ كانت الإجابة المقبولة   
    إن جميع هذه الدوال تستخدم لإزالة العناصر من DOM tree (Document Object Model)  ولكن هناك بعض الفروقات:
    الدالة .empty() تقوم بإزالة جميع العناصر الأبناء لعنصر معين عند تطبيقها عليه أي بمعنى آخر تقوم بإفراغ العنصر. الدالة .remove() عندما تريد إزالة عنصر بحد ذاته بالإضافة للعناصر التي يحتويها أي أنها تقوم بإزالة العنصر مع جميع عناصره الأبناء. الدالة .detach() تعمل هذه الدالة نفس عمل الدالة remove() ولكنها تقوم بالاحتفاظ بجميع بيانات الـJQuery المرتبطة بالعنصر المحذوف، هذه الدالة مفيدة عند حذف العناصر التي نريد إدراجها في الـDOM لاحقًا.   ما هو الفرق بين .remove و .empty و .detach في Javascript؟
  4. إجابة Lujain Maaz سؤال في ماهو class selector وما الفرق بينه وبين id selector في CSS؟ كانت الإجابة المقبولة   
    يستخدم class selector  لتطبيق style على عدة عناصر HTML مثلًا عندما نريد جعل عنصر من نوع <p> و <h1> تأخذ نفس نوع الخط Helvetica واللون الأحمر، نقوم بإعطاء كل من <p>  و <h1> اسم صف class موحد ليكن مثلًا class =”sameFontColor”
    <style> .sameFontColor { font-family:Helvetica; color:red; } </style>ثم نقوم بإعطاء اسم الـclass = “sameFontColor” للعناصر التي نريد تطبيق عليها التصميم
    <div> <h1 class="sameFontColor">Class Selector Example</h1> <p class="sameFontColor">Hello World!</p> <p>Paragraph here</p> <p>Lorem Lorem Lorem Lorem</p> </div>الفرق بين class selector و id selector هو أن id selector يطبق على عنصر واحد فقط (لا يمكن إعطاء نفس اسم المعرف id لأكثر من عنصر)
    مثال:
    #greenParagraph { color:lightgreen; }لنقم بتطبيقه على عنصر <p>
    <p id="greenParagraph">Paragraph here</p>
     
  5. إجابة Lujain Maaz سؤال في كيف أُغيّر قيمة href في HyperLink باستخدام JQuery؟ كانت الإجابة المقبولة   
    يمكن ذلك عن طريق الدالة attr ومن ثم تحديد الخاصية href وقيمتها، مثال ليكن لدينا عنصر HyperLink عند الضغط عليه يذهب لموقع google
    <a href="http://www.google.com/>Google</a>لتغيير الرابط في الـ Javascript نكتب:
    $("a").attr("href", "http://academy.hsoub.com/")في إصدار JQuery 1.6 يمكن استخدام الدالة prop() كما في المثال التالي:
    $("a").prop("href", "http://academy.hsoub.com") 
    كيف أُغيّر قيمة href في HyperLink باستخدام JQuery؟
  6. إجابة Lujain Maaz سؤال في كيف أعرف أن Radio Button معين قد تم تحديده باستخدام JQuery؟ كانت الإجابة المقبولة   
    يمكن ذلك عن طريق الخاصية :checked  التي ستنفذ عند اختيار أحد الـradio buttons.
     ليكن لدينا form يحوي على ثلاث radio buttons 
    <form id="myForm"> <input type="radio" name="radioName" value="1" /> 1 <br /> <input type="radio" name="radioName" value="2" /> 2 <br /> <input type="radio" name="radioName" value="3" /> 3 <br /> </form>الآن نكتب الـ script الذي سينفَذ عند اختيار أحد الـ radio buttons:
    $('#myForm input').on('change', function() { alert($('input[name=radioName]:checked', '#myForm').val()); });لاحظ أننا وضعنا الخاصية :checked بعد تحديد اسم الـ radiobutton الذي نريد أخذ قيمته عند اختياره عن طريق الدالة .val()
    يمكن أيضًا استخدام معرف العنصر id لتحديد الـradiobutton كما في المثال التالي:
    <input id="rad1" type="radio" name="radioName" value="1" /> 1 <br />في الـ script نكتب:
    $('#myForm input').on('change', function() { alert($('#rad1:checked', '#myForm').val()); });
  7. إجابة Lujain Maaz سؤال في كيف أقارن 2 Lists لحذف العناصر غير المتشابهة بينهما في C#؟ كانت الإجابة المقبولة   
    يمكنك استخدام الدالة Contains والتي تُرجع قيمة boolean وتحدد فيما إذا كان العنصر ينتمي إلى السلسلة أم لا.
    مثال ليكن لدينا 2 List في كل منهما مجموعة عناصر من بينها عناصر مشتركة لكلا المجموعتين:
    List1: {"AAA","BBB","CCC"} List2: {"BBB","CCC","DDD"} List<String> lst1 = new List<string> {"AAA","BBB","CCC" }; List<String> lst2 = new List<string> { "BBB","CCC","DDD"};يوجد قيمتين مشتركتين هما "BBB" و "CCC"
    static void Main(string[] args) { List<String> lst1 = new List<string> { "AAA", "BBB", "CCC" }; List<String> lst2 = new List<string> { "BBB", "CCC", "DDD" }; List<String> finalLst = new List<string>(); for (int i = 0; i < lst1.Count; i++) { if (!lst2.Contains(lst1[i])) { finalLst.Add(lst1[i]); // Console.WriteLine(finalLst); } else { lst2.Remove(lst1[i]); } } finalLst.AddRange(lst2); for (int j = 0; j < finalLst.Count; j++) { Console.WriteLine("\t" +finalLst[j]); } Console.ReadLine(); } قمت بتطبيق حلقة التكرار على القائمة الأولى لإيجاد العناصر التي لا تنتمي للقائمة الثانية وإضافتها للقائمة الأخيرة finalLst، بعد ذلك قمت بحذف جميع العناصر التي تشترك مع القائمة الأولى lst1 من القائمة الثانية lst2.
    ملاحظة: الدالة addRange() تُضيف القائمة كاملة؛ أي تقوم بإضافة كامل الـList إلى List أخرى.
    النتيجة:

     
  8. إجابة Lujain Maaz سؤال في كيف أقوم بتوليد أرقام عشوائية في C#؟ كانت الإجابة المقبولة   
    يمكن توليد أرقام عشوائية في C# باستخدام الدالة Next في الصف Random، الدالة Next هي دالة static وتأخذ معاملين 2 argument هما min و max اللتان تحددان المجال الذي سيتم فيه توليد الأرقام العشوائية.
    مثال:
    static void Main(string[] args) { for (var i = 0; i < 10; i++) { Random r = new Random(i); Console.WriteLine(r.Next(1000,9999)); } Console.ReadLine(); } }لكي يتم توليد الأرقام من 4 خانات يجب أن يحدد المجال بين 1000 - 9999.
    ملاحظة: الغرض r من النوع Random يأخذ معامل في الـConstructor وهي البذرة seed أي نقطة انطلاق توليد الأرقام العشوائية، بحيث عند الانطلاق من نفس القيمة للـseed فإننا بذلك سوف نحصل على نفس سلسلة الأرقام العشوائية في كل مرة، لهذا وضعتها متغيرة وهي قيمة i .

    كيف أقوم بتوليد أرقام عشوائية في C#؟
  9. إجابة Lujain Maaz سؤال في كيف أحولArrayList Object إلى مصفوفة array[] string في جافا؟ كانت الإجابة المقبولة   
    يتم ذلك باستخدام الدالة toArray() في جافا وإعطاءها معامل argument وهو ArrayList Object ومن ثم إسناد القيمة المرتجعة في مصفوفة String[] مثال:
    List<String> list =new ArrayList<String>(); //add some stuff list.add("android"); list.add("apple"); String[] stringArray = list.toArray(new String[list.size()]);في حال عدم تمرير أي معامل للدالة ()toArray فستكون القيمة المرتجعة هي مصفوفة من نوع []Object.
  10. إجابة Lujain Maaz سؤال في متى أكون بحاجة لتعريف Abstract Class وماهي الفائدة منه؟ كانت الإجابة المقبولة   
    تكمن أهمية الصفوف المجردة Abstract Classes في أنها يمكن أن تحتوي على توابع (دوال) لا تقوم بتنفيذ أي سلوك (contains no implementation) يتم تحديد السلوك في الصف الابن الذي يرث من الصف المجرد حيث يجبر الصف الابن على إعادة تعريف الدوال الموجودة في الصف المجرد وبالتالي تحديد السلوك الذي يتقوم بتنفيذه، قد تقول لي وما هي الفائدة؟
    لنفرض أنه لديك مجموعة من الكائنات تشترك بسلوكيات معينة ولكنها تختلف بطريقة تطبيق هذا السلوك مثلًا: أغلب الكائنات الحية تنتقل من مكان لآخر(السلوك هو الانتقال ) ولكن طريقة الانتقال تختلف فالأسماك مثلًا تسبح والطيور تطير والنمر يمشي أو يركض ..الخ، إن أردنا إسقاط هذا المثال على البرمجة وبرمجة تطبيق يقوم بتحديد سلوك انتقال كائن ما كيف سيتم ذلك؟
    الحل الأمثل نقوم بإنشاء صف مجرد Abstract Class يحوي على دالة مجردة Abstract Function  مثلًا move:
    public abstract void move();ثم إنشاء صف لكل كائن يرث من الصف المجرد Abstract Class ويحدد نوع السلوك الذي ينفذه في الدالة:
    move()1-Class Bird
    public override void move() { Console.WriteLine("I'm bird I can fly"); }2- Class Fish
    public override void move() { Console.WriteLine("I'm fish I can swim"); } 
    متى أكون بحاجة لتعريف Abstract Class وماهي الفائدة منه؟
  11. إجابة Lujain Maaz سؤال في كيف أستخدم try, catch في C#؟ كانت الإجابة المقبولة   
    يتم وضع try catch blocks في المواضع التي نتوقع فيها حدوث أخطاء Throw Exceptions مثل عندما نتعامل مع الملفات؛ كالقراءة منها أو الكتابة عليها، أو عند أي حدث نتوقع أن ينتج عنه أخطاء، وهي مهمة جدًا ويجب على كل مبرمج أن يولي مهمة معالجة الأخطاء اهتمامًا كبيرًا، وألا يترك أي ثغرة تفوته.
    لنفرض مثلًا أننا نريد فتح ملف ومن ثم القراءة منه، وبالصدفة كان هذا الملف غير موجود أو قد تم مسحه بطريقة ما، عندها سينتج خطأ وسيتسبب ذلك بعدم القدرة على الحصول على النتائج والقراءة من الملف ولن يفهم المستخدم ماهي المشكلة، لذا لابد أن نظهر للمستخدم رسالة خطأ تفيد بأن الملف الذي يحاول فتحه والقراءة منه غير موجود مثال:
    using System; using System.IO; public class ProcessFile { public static void Main() { try { StreamReader sr = File.OpenText("data.txt"); Console.WriteLine("The first line of this file is {0}", sr.ReadLine()); sr.Close(); } catch (Exception e) { Console.WriteLine("An error occurred: '{0}'", e); } } }في حال فشل فتح الملف أو القراءة منه سيقوم بعمل Throw Exception:

    كيف أستخدم try catch في C#
  12. إجابة Lujain Maaz سؤال في ماذا تعني QueryString في ASP.Net وما هي استخداماتها؟ كانت الإجابة المقبولة   
    تمكّنك QueryString من تمرير متغيرات بين صفحات الويب في ASP.Net عن طريق رابط الصفحة URL فعلى سبيل المثال إن كنت بحاجة لأخذ معلومات من الصفحة الأولى مثل الاسم الأول والاسم الأخير واستخدام هذه المعلومات في صفحة أخرى.
    لنفرض أننا نريد تمرير الاسم الأول والاسم الأخير FirstName, LastName إلى صفحة أخرى عبر URL، فنقوم بكتابة المتغيرات في الرابط الذي نقوم بإنشائه في الحدث الذي ينتقل إلى الصفحة الثانية:
    private void btnSubmit_Click(object sender, System.EventArgs e) { Response.Redirect("Webform2.aspx?Name=" + this.txtName.Text + "&LastName=" + this.txtLastName.Text); } في الصفحة الثانية عند استرجاع قيم المتغيرات نكتب:
    private void Page_Load(object sender, System.EventArgs e) { this.txtBox1.Text = Request.QueryString["Name"]; this.txtBox2.Text = Request.QueryString["LastName"]; } يمكن أيضًا استرجاع قيم المتغيرات عن طريق المؤشر index لكل متغير في الـQueryString مثلًا:
     
    private void Page_Load(object sender, System.EventArgs e) { this.txtBox1.Text = Request.QueryString[0]; this.txtBox2.Text = Request.QueryString[1]; } ماذا تعني QueryString في ASP.Net وما هي استخداماتها؟
  13. إجابة Lujain Maaz سؤال في ماهي View State في ASP.Net ولم تستخدم؟ كانت الإجابة المقبولة   
    يمكن تشبيه الـ ViewState في ASP.Net بالمستودع repository لصفحة الويب، التي تمكنك من تخزين القيم التي تحتاج للاحتفاظ بها أثناء عملية العودة إلى السيرفر PostBack وعدم ضياعها.
    لنفرض أنك قمت بتخزين مصفوفة تحوي على أسماء موظفين مثلًا وتعبئتها بقائمة منسدلة DropDownList ثم حدث أمر ما جعل الصفحة تعود للسيرفر مرة أخرى وتتحمل من جديد هنا ستفقد المعلومات المخزنة في المصفوفة لأنها ستتعرف من جديد عند تحميل الصفحة.
    الحل هو استخدم ViewState وتخزين المصفوفة بها واسترجاعها عند اللزوم.
    <script runat="server"> // Sample ArrayList for the page. ArrayList PageArrayList; ArrayList CreateArray() { // Create a sample ArrayList. ArrayList result = new ArrayList(4); result.Add("item 1"); result.Add("item 2"); result.Add("item 3"); result.Add("item 4"); return result; } void Page_Load(object sender, EventArgs e) { if (ViewState["arrayListInViewState"] != null) { PageArrayList = (ArrayList)ViewState["arrayListInViewState"]; } else { // ArrayList isn't in view state, so we need to load it from scratch. PageArrayList = CreateArray(); } // Code that uses PageArrayList. } void Page_PreRender(object sender, EventArgs e) { // Save PageArrayList before the page is rendered. ViewState.Add("arrayListInViewState", PageArrayList); } </script> 
    ماهي View State في ASP.Net ولم تستخدم؟
  14. إجابة Lujain Maaz سؤال في ما هي أنواع الـValidation Controls في ASP.Net وما هو استخدام كل نوع؟ كانت الإجابة المقبولة   
    يوجد 6 أنواع من عناصر التحقق Validation Controls في ASP.Net:
    CompareValidator CustomValidator  RangeValidator RegularExpressionValidator RequiredFieldValidator ValidationSummary  1-CompareValidator: يقوم بعمل مقارنة مثل المساواة، (أصغر من) أو (أكبر من) بين قيم عنصري إدخال كـ TextBoxes.
    2-CustomValidator: يمكنك من تعريف دالة server side function لتقوم بتنفيذها والتحقق على طريقتك الخاصة، كما أنه بإمكانك إنشاء دالة جافا سكربت client side function وتنفيذها عند تطبيق التحقق.
    لنفرض أنه يجب على المستخدم إدخال 9 محارف على الأقل في Text Box كيف سنعالج ذلك؟ لنقم بكتابة دالة validateLength وإعطائها معامل وهو قيمة الإدخال ليتم التحقق على أنها تحوي على 9 محارف:
    <script type="text/javascript"> function validateLength(oSrc, args){ args.IsValid = (args.Value.length >= 8); } </script> الآن لنقم بتنفيذ الدالة في الخاصية ClientValidationFunction
    <asp:Textbox id="text1" runat="server" text=""></asp:Textbox> <asp:CustomValidator id="CustomValidator2" runat="server" ControlToValidate = "text1" ErrorMessage = "You must enter at least 8 characters!" ClientValidationFunction="validateLength" > </asp:CustomValidator>
    3-RangeValidator: يمكنك من تحديد فيما إذا كان إدخال المستخدم يقع ضمن مجال معين أم لا، يمكن تطبيق ذلك على الأرقام والأحرف وحتى على التواريخ.
    الخاصيتين MaximumValue و MinimumValue تحددان القيم الأصغر والقيمة الأكبر للمجال.
    <asp:RangeValidator id="ProgrammaticID" ControlToValidate="ProgrammaticID of control to validate" MinimumValue="value" MaximumValue="value" Type="DataType" ErrorMessage="Message to display in ValidationSummary control" Text="Message to display in control" ForeColor="value" BackColor="value" runat="server" > </asp:RangeValidator> 4-RegulerExpressionValidator: يقوم بتحديد فيما إذا كان الإدخال يتبع لنمط أو شكل معين مثل الإيميل email formate مثلًا، أو صيغة رقم الهاتف.
    5-RequiredFieldValidator: يقوم بالتأكد إن كان الحقل فارغًا أم لا.
    6-ValidationSummary: يقوم بعرض جميع رسائل التحقق من جميع الـValidation Controls في مكان واحد في صفحة الويب.
  15. إجابة Lujain Maaz سؤال في كيف أعرض جميع رسائل التحقق Validation في مكان واحد في ASP.Net؟ كانت الإجابة المقبولة   
    يتم ذلك باستخدام ValidationSummary والذي يتيح  تجميع كل رسائل التحقق من جميع الـValidation Control في صفحة الويب ليتم عرضها في مكان واحد.
    <asp:ValidationSummary id="programmaticID" DisplayMode="BulletList | List | SingleParagraph" EnableClientScript="true | false" ShowSummary="true | false" ShowMessageBox="true | false" HeaderText="TextToDisplayAsSummaryTitle" runat="server"/>يمكنك عرض ملخص رسائل التحقق في قائمة List أو في نص paragraph، بحسب قيمة الخاصية DisplayMode، لعرض أو إخفاء ValidationSummary عن طريق تحديد الخاصية ShowSummary.
    يمكنك أيضًا عرض ملخص رسائل التحقق ضمن صندوق رسائل MassageBox عن طريق تحديد الخاصية ShowMassageBox="True".
    مثال:
    <div> <h3>ValidationSummary Sample</h3> <p> <form runat="server"> <table cellpadding="10"> <tr> <td> <table bgcolor="#eeeeee" cellpadding="10"> <tr> <td colspan="3"> <b>Credit Card Information</b> </td> </tr> <tr> <td align="right"> Card Type: </td> <td> <asp:RadioButtonList id="RadioButtonList1" RepeatLayout="Flow" runat=server> <asp:ListItem>MasterCard</asp:ListItem> <asp:ListItem>Visa</asp:ListItem> </asp:RadioButtonList> </td> <td align="middle" rowspan="1"> <asp:RequiredFieldValidator id="RequiredFieldValidator1" ControlToValidate="RadioButtonList1" ErrorMessage="Card Type." Display="Static" InitialValue="" Width="100%" Text="*" runat="server"/> </td> </tr> <tr> <td align="right"> Card Number: </td> <td> <asp:TextBox id="TextBox1" runat="server" /> </td> <td> <asp:RequiredFieldValidator id="RequiredFieldValidator2" ControlToValidate="TextBox1" ErrorMessage="Card Number. " Display="Static" Width="100%" Text="*" runat=server/> </td> </tr> <tr> <td></td> <td> <asp:Button id="Button1" Text="Validate" runat=server /> </td> <td></td> </tr> </table> </td> <td valign=top> <table cellpadding="20"> <tr> <td> <asp:ValidationSummary id="valSum" ForeColor="Red" DisplayMode="BulletList" EnableClientScript="true" HeaderText="You must enter a value in the following fields:" runat="server"/> </td> </tr> </table> </td> </tr> </table> </form> </div>قمت هنا بعرض رسائل التحقق لعنصرين هما RadioButton و TextBox (نوع بطاقة الائتمان ورقم البطاقة).
    في حال عدم إدخال أي قيم أو تحديد خيار ستظهر الرسائل هكذا:

    في حال اختيار نوع البطاقة مثلًا وعدم إدخال رقمها ستظهر رسالة التحقق الخاصة بالـTextBox فقط.

    كيف أعرض جميع رسائل التحقق Validation في مكان واحد في ASP.Net؟
  16. إجابة Lujain Maaz سؤال في ماذا تعني AutoPostBack في ASP.Net؟ كانت الإجابة المقبولة   
    ببساطة تتيح AutoPostBack عند تطبيقها على عنصر في جعله يقوم بالعودة إلى السيرفر (الخادوم) بشكل تلقائي عند تطبيق حدث معين، كما تعلم هناك عناصر Controls مثل الأزرار Buttons تقوم بالرجوع للسيرفر عند تطبيق حدث Click، فعند رغبتنا بجعل عنصر ما كالقائمة المنسدلة DropDownList مثلًا أن تقوم بالعودة للسيرفر عند كل عملية تغيير Change عليها لتقوم بتنفيذ دالة معينة موجودة في الـcode behined نقوم بوضع AutoPostBack="True" ونحدد في الحدث OnSelectedChange الدالة التي ستقوم بتنفيذها عند حدوث تغيير (إختيار عنصر من القائمة).
    كمثال أوضح افترض أنه لديك قائمتان منسدلتان في الأولى يوجد أسماء مجموعة من الدول وتريد عند اختيار دولة معينة أن تقوم بتعبئة القائمة المنسدلة الثانية بأسماء جميع المدن الموجودة في هذه الدولة التي تم اختيارها، في هذه الحالة ستقوم بتطبيق خاصية AutoPostBack على القائمة المنسدلة الأولى وتحدد الدالة التي ستُنفذ في الحدث OnSelectedChange الذي بدوره سيقوم بتعبئة القائمة المنسدلة الثانية بأسماء جميع المدن الموجودة في الدولة التي اخترتها من القائمة الأولى.

     
  17. إجابة Lujain Maaz سؤال في كيف أتحقّق من تطابق حقلين Password Text Box باستخدام Validator في ASP.Net؟ كانت الإجابة المقبولة   
    عملية التحقق من تطابق محتوى حقلين هي في الواقع عملية مقارنة بينهما، يتم التحقق من مساواة ( أي تطابق) نص أو قيمة في حقلين مختلفين باستخدام عنصر Compare Validator حيث يتيح لك مقارنة قيمة مدخلة في حقل مع قيمة مدخلة في حقل آخر عن طريق الخاصية ControlToCompare التي نضع فيها معرف الحقل الثاني الذي نود المقارنة معه وفي الخاصية ControlToValidate نضع معرف الحقل الأول الذي نود تطبيق الـValidation عليه.
    <asp:CompareValidator id="ProgrammaticID" ControlToValidate="Programmatic ID of Server Control to Validate" ValueToCompare="value" ControlToCompare="value" Type="DataType" Operator="Operator Value" ErrorMessage="Message to display in ValidationSummary control" Text="Message to display in control" ForeColor="value" BackColor="value" runat="server" > </asp:CompareValidator> في الخاصية ValueToCompare نضع القيمة التي نود المقارنة على أساسها، وفي الخاصية Operator نضع عملية المقارنة مثلًا أكبر من ، أصغر من ، يساوي. الخ، الخاصية Type تحدد نوع القيمة التي ستقارن هل هي رقم صحيح أم عشري أم عبارة عن سلسلة نصية.
    مثال: لنقم بإنشاء حقلين Text Box لإدخال كلمة السر ومن ثم إعادتها للتحقق من التطابق:
    <div> Password:<br /> <asp:TextBox runat="server" id="TextBox1" /><br /><br /> Confirm Password:<br /> <asp:TextBox runat="server" id="TextBox2" /><br /> <asp:CompareValidator runat="server" id="CompareValidator1" controltovalidate="TextBox2" controltocompare="TextBox1" operator="Equal" type="String" errormessage="Passwords are mismatch!" ForeColor="red" /><br /> </div> ستظهر النتيجة كما في الصورة  في حال لم يتم إدخال قيمة مطابقة للحقلين:

    بإمكانك أيضًا المقارنة بين حقلين للتحقق أن الحقل الثاني يحتوي على قيمة عدد صحيح أكبر من قيمة  الحقل الأول.
    مثال:
     
     
    <div > Small number:<br /> <asp:TextBox runat="server" id="txtSmallNumber" /><br /><br /> Big number:<br /> <asp:TextBox runat="server" id="txtBigNumber" /><br /> <asp:CompareValidator runat="server" id="cmpNumbers" controltovalidate="txtSmallNumber" controltocompare="txtBigNumber" operator="LessThan" type="Integer" errormessage="The first number should be smaller than the second number!" ForeColor="red" /><br /> </div> في حال تم إدخال في الحقل الثاني قيمة أصغر من قيمة الحقل الأول فستظهر رسالة خطأ كما في الصورة:

    كيف أتحقّق من تطابق حقلين Password Text Box باستخدام Validator في ASP.Net؟
  18. إجابة Lujain Maaz سؤال في ماهي Session في ASP.Net وما هو استخدامها؟ كانت الإجابة المقبولة   
    تمكنك الـ Session  في ASP.NET من تخزين متغيرات في صفحة معينة ومن ثم استرجاعها في صفحة أخرى أي أنها تسمح لك بتخزين متغيرات عند الانتقال بين الصفحات.
    تخزن المتغيرات في الغرض SessionStateItemCollection في الخاصية HttpContext.Session في صحفة ASP.Net
    عند تخزين المتغيرات في session نعطي لكل متغير مفتاح key وهو الذي سنقوم باسترجاع المتغير عن طريقه مثال لنقم بتخزين الاسم والأول والاسم الثاني من الحقلين FirstNameTextBox و LastNameTextBox:
    Session["FirstName"] = FirstNameTextBox.Text; Session["LastName"] = LastNameTextBox.Text; وعند استرجاعهما نكتب:
    String firstName =(String) session[“FirstName”]; String lastName =(String) session[“LastName”]; لاحظ أنه عند استرجاع القيم يجب عمل Casting أي تحديد نوع القيمة التي أريد استرجاعها من الSession
    يمكن تخزين أي نوع من المتغيرات سواء أكانت primitive types مثل int أو double أو حتى Objects
    مثلًا لنقم بتخزين غرض ArrayList Object في متغير(مفتاح) StockPicks :
    Session["StockPicks"] = stockPicks;عند الاسترجاع نكتب:
    ArrayList stockPicks = (ArrayList)Session["StockPicks"]; 
    ماهي Session في ASP.Net وما هو استخدامها؟
  19. إجابة Lujain Maaz سؤال في كيف أفصل سلسلة نصية إلى عدة سلاسل نصية في C#؟ كانت الإجابة المقبولة   
    يمكن ذلك باستخدام الدالة split() التي تقسم السلسلة النصية عند محرف أو رمز معين مثل الفراغ space او فاصلة comma
    مثال: لنفرض أننا نريد تقسيم النص التالي إلى 3 أقسام:
    "In the end, it's not the years in your life that count, It's the life in your year,"لاحظ أن النص يحوي 3 جمل تفصل بينها فاصلة سنقوم بكتابة الشيفرة البرمجية التالية:
    string mytext = "In the end, it's not the years in your life that count, It's the life in your year,"; string[] myArrayText = mytext.Split(','); string text1 =myArrayText[0]; string text2 = myArrayText[1]; string text3 = myArrayText[2]; Console.WriteLine("text1 \t" + text1); Console.WriteLine("text2 \t" + text2); Console.WriteLine("text3 \t" + text3); Console.ReadLine();إن الدالة split تقوم بإرجاع مصفوفة من نوع string تحوي على السلاسل النصية التي تم فصلها لذلك قمت بتعريف مصفوفة myArrayText واسناد mytext.Split(',') إليها، ثم إسناد كل سلسة نصية إلى متحول مختلف.
    أخيرًا طباعة النصوص كلٍ على حدا كما في الصورة:

  20. إجابة Lujain Maaz سؤال في كيف أضيف validation control للتحقق من الإدخال في Text Box في ASP.Net؟ كانت الإجابة المقبولة   
    يمكنك ذلك باستخدام RequiredFieldValidator وإعطاء معرف العنصر المراد تطبيق التحقق عليه للخاصية ControlToValidate كما في المثال التالي:
    <asp:Textbox id="txtLastName" runat="server"></asp:Textbox> <asp:RequiredFieldValidator id="RequiredFieldValidator1" runat="server" ControlToValidate="txtLastName" ErrorMessage="Last name is a required field." ForeColor="Red"> </asp:RequiredFieldValidator>تحدد رسالة الخطأ التي تريد إظهارها للمستخدم في الخاصية ErrorMassage وكذلك لون رسالة الخطأ بـ ForeColor
    في المثال أعلاه التحقق يكون فقط على وجود محتوى في الTextBox بمعنى أنه لا يسمح لك بترك الحقل فارغ.
    في حين رغبتك بوضع Validator مثلًا ليتحقق أن النص المكتوب في الحقل هو أرقام فقط فعليك باستخدام Reguler Expression كما في المثال التالي:
    private void OnTextChanged(object sender, EventArgs e) { if (!System.Text.RegularExpressions.Regex.IsMatch("^[0-9]", textbox.Text)) { textbox.Text = string.Empty; } }هناك الكثير من الـValidators التي يمكنك تطبيقها على الTextBoxes مثل Regex للتأكد من أن النص المكتوب هو نص إيميل صحيح أي يحوي على Valid Email Formate
    كيف أضيف validation control للتحقق من الإدخال في Text Box في ASP.Net؟
    كيف أضيف validation control للتحقق من الإدخال في Text Box في Asp.Net
  21. إجابة Lujain Maaz سؤال في كيف أغيّر لون عنصر بشكل تدريجي إلى لون آخر عند الضغط عليه في الويندوز فون؟ كانت الإجابة المقبولة   
    التغيير التدريجي من لون إلى لون آخر يكون باستخدام Color Animation لعمل ذلك قم بإنشاء Storyboard كما في المثال التالي:
    <StackPanel MouseLeftButtonUp="Rectangle_Tapped"> <StackPanel.Resources> <Storyboard x:Name="myStoryboard"> <!-- Animate the background color of the canvas from red to green over 4 seconds. --> <ColorAnimation Storyboard.TargetName="mySolidColorBrush" Storyboard.TargetProperty="Color" From="Red" To="Blue" Duration="0:0:4" /> </Storyboard> </StackPanel.Resources> <StackPanel.Background> <SolidColorBrush x:Name="mySolidColorBrush" Color="Red" /> </StackPanel.Background> </StackPanel>هنا قمنا بتحديد الخاصية Color للعنصر في Storyboard.TargetProperty لأن التغيير سيكون باللون مثلًا من الأحمر إلى الأزرق.
    ثم نحدد العنصر الذي سنطبق عليه التأثير مثلًا StackPanel:
    <StackPanel.Background> <SolidColorBrush x:Name="mySolidColorBrush" Color="Red" /> </StackPanel.Background>ثم نكتب الشيفرة التالية في الـCode behind 
    private void Rectangle_Tapped(object sender, MouseEventArgs e){ myStoryboard.Begin(); } 
     
    انظر لشرح Color Animation
    كيف أغير لون عنصر بشكل تدريجي إلى لون آخر  في ويندوز فون
  22. إجابة Lujain Maaz سؤال في كيف أطبِّق تأثير Animation يقوم بتغيير درجة لون عنصر مثل مستطيل أو دائرة عند الضغط عليه في الويندوز فون باستخدام Storyboard؟ كانت الإجابة المقبولة   
    هناك عدة أنواع من التأثيرات الحركية Animation في الويندوز فون مثل Double animation و Color Animation هما اكثر الأنواع استخدامًا
    عندما تريد تطبيق تأثير تغيير درجة لون على عنصر ما فأنت تقوم بتغيير الخاصية Opacity (الشفافية) أي أن شفافية اللون ستتغير من درجة إلى درجة أخرى، وبما أن الخاصية opacity تأخذ قيمها من 0 إلى 1 وهي عبارة عن أرقام إذًا سيكون استخدام double animation هو المناسب في هذه الحالة.
    لعمل ذلك نقوم بإنشاء storyboard وإعطاءه x:Name في جهة xaml من الصفحة وفي جزء الـ Resources بالتحديد كما في المثال التالي:
    <Storyboard x:Name="myStoryboard"> <DoubleAnimation Storyboard.TargetName="MyAnimatedRectangle" Storyboard.TargetProperty="Opacity" From="1.0" To="0.0" Duration="0:0:1" AutoReverse="True"/> </Storyboard>وإنشاء DoubleAnimation وتحديد الخصائص:
    أولًا خاصية storyboard.TargetName نكتب فيها اسم العنصر المراد تطبيق التأثير عليه أي الـ x:Name
    خاصية storyboard.TargetProperty نكتب فيها اسم الخاصية المراد التأثير عليها، هنا سنقوم بالتأثير على الشفافية opacity (تكون هذه الخاصية من ضمن خواص العنصر).
    الخاصيتين From و To  نكتب فيهما القيم التي نريد أن تتغير وفقها الشفافية (مثلًا أريد ان يتغير لون المستطيل من أغمق درجة لون للأزرق إلى أفتح درجة لون للأزرق أي الأبيض).
    الخاصية Duration هي الزمن الذي سيتم فيه تطبيق التأثير (هل أريد ان يتغير اللون بشكل سريع أم بطيء؟) كلما كانت قيمة Duration أصغر كلما كان تغيير اللون أسرع.
    آخر نقطة هي الخاصية AutoReverse  تسمح هذه الخاصية بإعادة تكرار التأثير بشكل متواصل أي من الأغمق إلى الأفتح ومن الأفتح إلى الأغمق (دون توقف)
    إن كنت تريد تطبيق التأثير لمرة واحدة فقط قم بجعل AutoReverse  ="false" 
    الآن لإنشاء العنصر نكتب الشيفرة التالية في Xaml الصفحة
    <Rectangle MouseLeftButtonUp="Rectangle_Tapped" x:Name="MyAnimatedRectangle" Width="300" Height="200" Fill="Blue" />قمت بتحديد الحدث الذي أريد أن يطبق التأثير عند تنفيذه مثلًا الحدث Click أو MouseLeftButtonUp
    وتسمية العنصر بـX:Name وتحديد لونه بالخاصية Fill
    الآن نكتب الشيفرة التالية في الـCode Behind للحدث MouseLeftButtonUp
    ليقوم بتنفيذ الـStoryboard وتنفيذ Animation
    private void Rectangle_Tapped(object sender, MouseEventArgs e){ myStoryboard.Begin(); }كيف أطبِّق تأثير Animation يقوم بتغيير درجة لون عنصر في ويندو زفون
×
×
  • أضف...