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

Flutter Dev

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

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

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

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

    2

أجوبة بواسطة Flutter Dev

  1. لدي نطاق مستعمل على استضافة الان وسوف ينتهي قريب حيث انه تم تحديد موعد الانتهاء وهو بعد استكمال سنة حيث انني قمت بحجزه لمدة سنه مسابقا

    استفساري بعد انتهاء مدته وستكمل سنه كامله هل يصبح النطاق متاح من جديد للحجز مباشره بعد موعد انتهاء في حالة عدم تجديد الاشتراك؟

    السبب انني قمت بحجز استضافة جديده على نفس الشركة وقد حصلت على نطاق مجاني يأتي لدى الاستضافة ولكني لا استطيع حجز النطاق الان بسبب توفره في استضافتي السابقة

    • أعجبني 1
  2. بتاريخ On 12/24/2021 at 01:22 قال Wael Aljamal:

    لاحظ أن طريقة كتابة الاستعلام لديك فيها خطأ، حيث أن الاستعلام يقوم بدمج نتائج جدولين أو أكثر (جداء الأسطر) مما يؤدي لعمل جدول يحوي لكل سطر فيه ناتج تكرار كل سطر من أول جدول مع جميع أسطر الجدول الثاني (حجم بيانات ضخم و استعلام معقد..

    
    string com = "select * from TCity ,  TColors ";
                                ^^^^^^^^^^^^^^^^   cartisan product

    الحل لديك هو عمل استعلام منفصل لكل جدول و نشر بيانات الاستعلام في القائمة المناسبة.

    • يمكن للتبسيط:

    اكتب stored procedure يأخذ اسم الجدول كوسيط ويجلب بيناته..

    
    CREATE PROCEDURE getTableData @TableName Varchar(30) 
    AS 
    BEGIN 
     DECLARE @query
     set @query = 'SELECT  * FROM '+ @TableName 
     EXEC @query
    END
    
    --****************************************************
    
    CREATE PROCEDURE getTableData
    
        @TableName varchar(30)
    AS
        SELECT * FROM @TableName
    
    --****************************************************
    
    IF NOT EXISTS(SELECT * FROM sys.tables WHERE name = @tablename)
        RETURN
    
    DECLARE @sql NVARCHAR(30)
    SET @sql = 'SELECT * FROM ' + QUOTENAME(@tablename)
    EXECUTE(@sql)

     

    شرح المشكلة:

    اقرأ فقرة الضم المتقاطع Cross Join من المقالة 

     

    شكرا لك اخي الكريم

    فعلا المشكله كانت بسبب تكرر الجدول في الاستعلام قمت بفصل الجداول الى جدولين على الأقل في كل استعلام واصبح الامر يعمل بشكل ممتاز

    كل الشكر لك اخي الكريم واعتذر على تاخر ردي

    • أعجبني 1
  3. املك صفحة لتحرير بيانات المستعملين استعمل ما يقارب 8 او 9  من  DropDownList اقوم بتعبئتها مع تحميل الصفحة من قاعدة البيانات كل  DropDownList يتم تحميله من جدول منفصل من قاعدة البيانات على سبيل المثال 

     DropDownList1 من جدول المركبات 

     DropDownList2 من جدول الهويات 

    الخ..

    المشكلة ان الصفحة الان بطيئة جدا مع افتتاحها وبعض المحاولات لا تفتح ابد

    هل يوجد حل لحل هذا المشكلة ؟كيف يمكن تسريع تحميل الداتا في DropDownList

    نبذه من الكود:

     SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
    
                string com = "select * from TCity ,  TColors ";
                SqlDataAdapter adpt = new SqlDataAdapter(com, con);
         
                DataTable dt = new DataTable();
                adpt.Fill(dt);
                con.Open();
                DropCity.DataSource = dt;
                DropCity.DataBind();     
                DropCity.DataTextField = "CityName";
                DropCity.DataValueField = "IdCity";
                DropCity.DataBind();
                if (GetdefaultValuesCity != "")
                {
                    DropCity.Items.Insert(0, new ListItem(GetdefaultCity, GetdefaultValuesCity));
                }
           
    
                con.Close();
    
    
                con.Open();
                DropColors.DataSource = dt;
                DropColors.DataBind();
                DropColors.DataTextField = "ColorsName";
                DropColors.DataValueField = "IDColors";
                DropColors.DataBind();
                if (GetDefaultValuesColors != "")
                {
                    DropColors.Items.Insert(0, new ListItem(GetDefaultColors, GetDefaultValuesColors));
                }
    
             
                con.Close();

    الكود بشكل هذا تقريبا 8 او 9 متوفر منه

    • أعجبني 1
  4. بتاريخ On 12/18/2021 at 16:19 قال Wael Aljamal:

    يمكنك تمرير قيمة ثابتة لكل سطر في ناتج الاستعلام مثل type = x لتعرف سطر اول او ثاني 

     SELECT *, 'R1' AS type FROM table

    و مرر R2 للاستعلام الثاني ثم يمكنك معرفة كل سطر من الناتج لمن يعود

    حل آخر، لا بأس بعمل استعلامين، وخزن نتيجتهما في متغيري منفصلين و طبق الشرط الذي يحلو لك لكل ناتج.

    شكرا لك اخي الكريم 

    مع الاسف لم تضبط لدي الحل الاول ثم قمت باتباع الحل الثاني وعمل دالة استعلام منفصله وقد نجح الامر 

    كل الشكر لك الغالي

    • أعجبني 1
  5. بتاريخ 10 ساعات قال Wael Aljamal:

    حاول تنفيذ الاستعلام عن طريق دمج ناتج استعلامين منفصلين باستخدام Union All

    
    SqlCommand comm = 
    
    new SqlCommand(  
      "select * from TFile "
    + " inner join TAlQ AS A ON TFile.SendFromIdTAlQ = A.IdAlQ "
    + " WHERE TFile.Name LIKE N'%" + TextBoxSerach.Text + "%'" 
    + " UNION ALL"
    + " select * from TFile " +
    + " inner join TAlQ  AS B  ON TFile.SendToIdTAlQ = B.IdAlQ " +
    + " WHERE TFile.Name LIKE N'%" + TextBoxSerach.Text + "%'"
    , con);

    في حال توقع نتائج مكررة احذف كلمة ALL.

    ALL تسمح بالتكرار، وإن حذفتها سيصبح الاستعلام أبطأ لأنه سيتحقق من كل قيمة مضافة أنها غير مكررة

    اهلا بك اخي الكريم

    شاكر لك ردك اخوي استفسار بسيط لو تكرمت 

    من اجل عمل استعلام موجه لسطر الأول او السطر ثاني من الاستعلام ماذا يجب ان استعمل حتى اجلب البيانات ؟

     

    اقصد في هذا الموقع بين علامات التنصيص:

    srd["SendToIdAlQ"].ToString();
     srd["SendFromIdAlQ"].ToString();

    انا احتاج ان اجلب بياناتهم مع بعض في نفس الوقت كيف يمكن توجيه كل سطر منهم الى سطر الاستعلام المناسب له 

    انا قمت بوضعهم بشكل هذا ولكن فقط احصل على النتائج من الشق الاول من الاستعلام بمعنى لا ينتقل الى الشق الثاني منه بعد UNION ALL 

    هل توجد طريقة لتوجيه الاستعلام لكل سطر على حده ؟

  6. تحيه طيبه للجميع

    لدي استعلام كالتالي:

     SqlCommand comm = new SqlCommand("select * from TFile " +
                                    "inner join TAlQ AS A ON TFile.SendFromIdTAlQ = A.IdAlQ " +
                                           "inner join TAlQ  AS B  ON TFile.SendToIdTAlQ = B.IdAlQ " + " WHERE " + "TFile.Name" + " LIKE N'%" + TextBoxSerach.Text + "%'", con);
                   

     

    الجدول TFile يحتوي على اعمده FromIdTAlQ + ToIdTAlQ وهم سوف يمتلكون قيم مختلف ولكن من عمود واحد من الجدول الثاني (ALQ) وبتحديد من حقل NameAlQ

     

    الجدول الثاني هو جدول ALQ  ويحتوي على حقل IdTAlQ و NameAlQ

     

     بعد ان احصل على البيانات اقوم بعرضها للمستخدم كالتالي :

    SqlDataReader srd = comm.ExecuteReader();
    
    
                    if (srd.HasRows)
                    {
                      
                        while (srd.Read())
                        {
                       
                            TexeBoxId.Text = srd["Id"].ToString();
                            TextName.Text = srd["Name"].ToString();
        //FromAlQ
      TextFrom.Text = srd["NameAlQ"].ToString();
    
    
    //ToAlQ
     TextTo.Text = srd["NameAlQ"].ToString();//=======================هنا المشكله
    
    }
    
    }

     

    المشكلة انني  ارغب بالاستعلام عن الحقل NameAlQ ولكن لا اعلم كيف أقوم بأخبار الدالة ان تأتي لي بقيمة الحقل مرتين بشكل مختلف الاول FromAlQ اما الثاني ToIdTAlQ حاولت كثير ولكن هيا دائما تأتي بقيمة FromIdTAlQ  ولا يمكنني الوصول الى السطر الثاني من الاستعلام كيف يمكنني توجيهها الى هذا السطر وهو المطلوب :

     "inner join TAlQ  AS B  ON TFile.ToIdTAlQ = B.IdAlQ " 

    لا اعلم اذا كانت المشكلة واضحه صراحه لم اعلم كيف يمكنني شرحها بالمختصر اكثر 

    ياليت لو احد لديه فكره عن طريقة حلها يساعدنا

  7. بتاريخ 5 دقائق مضت قال Sam Ahw:

    تأكد من ربط الملف والإشارة للمسار بالشكل الصحيح، كما يمكنك تجربة استخدام إحدى الطريقتين ضمن ترويسة الصفحة أو ضمن الكود:

    
    <head runat="server">
    <script src="test.js" type="text/javascript"></script>
    </head>
    
    Page.ClientScript.RegisterClientScriptInclude("test", ResolveUrl("~/js/test.js"));

     

    شاهد الصوره لو تكرمت هو يعطيني تنبيه ان فيه خطاء في طريقة كتابة id  المرتبطه مع هذا الفكشن مع العلم اني مسوي له نسخ من الصفحه الاساسيه اي لا يوجد خطاء كتابي

     

     

    61b8d841932d8_Screenshot2021-12-14214436.thumb.png.faa64e02fef41756499fdbf53d130df5.png

  8. بتاريخ 2 دقائق مضت قال Sam Ahw:

    هل قمت بربط ملف الجافاسكريبت بعد إنشائه؟

    بقد أن قمت بإنشاء ملف الجافاسكريبت وليكن test.js ووضعت بداخله الشيفرة البرمجية التالية:

    
    $(document).ready(function () {
                 $('<%=lstBoxTest.ClientID %>').SumoSelect({ okCancelInMulti: true });
                
            });

    يجب عليك ربطه مع الصفحة السابقة التي سيتم تنفيذ هذا الكود بداخلها من خلال الوسم التالي:

    
    <script src='<%=ResolveClientUrl("~/js/test.js") %>'  type="text/javascript"></script>

    مع استبدال المسار: ~/js/test.js حسب اسم ومكان توضّع ملف الجافاسكريبت الذي قمت بإنشائه.

    اهلا اخي الكريم

    نعم انا قمت مثل العاده بسحب الملف وافلاته في الصفحه المستهدفه 

     

    اخي هو يعطيني تنبيه بالازرق في ملف الجافا سكريبت كالتالي 

    
    Warning	TS1109	(JS) Expression expected.

     

  9. السلام عليكم ورحمة الله وبركاته

    تحيبه طيبه للجميع

    امتلك فاكشن في ملف asp.net  التصميم  كالتالي:

     <script type="text/javascript">
             $(document).ready(function () {
                 $(<%=lstBoxTest.ClientID%>).SumoSelect({ okCancelInMulti: true });
             });
         </script>

    ارغب بتحويلها او نقلها الى ملف منفصل ملف js  اعلم طريقة انشاء الملف ولكن الفكشن لم تعمل لدي بعد نقلها للملف المنفصل حاولت كتابتها بشكل التالي:

     $(document).ready(function () {
                 $('<%=lstBoxTest.ClientID %>').SumoSelect({ okCancelInMulti: true });
                
            });
     

     

    اعتقد ان المشكله في الجزء :

    lstBoxTest

    ولكني لم اعلم كيف يمكن كتابة الفكشن في الملف المنفصل بشكل الصحيح 

    ياليت من لديه فكره عن الامر يساعدنا

     

    شكرا لكم 

    • أعجبني 1
  10. تحيه طيبه للجميع

    تم حل المشكلة والشكر موصول الى الاخ @Wael Aljamal

    وللفائدة طريقة الحل كالتالي:

        					string checkedItems = "";
    						foreach (ListItem item in lstBoxTestCity.Items)
                       {
                            if (item.Selected)
                            {
                               
    
      							 checkedItems += item.Value + ",";
    
                            }
                        }
       						 cmd.Parameters.AddWithValue("@stIdCity", checkedItems);

     

    • أعجبني 1
  11. قمت بوضع السطر كالتالي :

    cmd.Parameters.AddWithValue(parameters[index], item.Value);
                                index++;

    ولكن تظهر الرسالة التاليه:

    @stIdCity0 is not a parameter for procedure Tprocedure.

    على حسب ما فهمت ان الصفر {0}هنا هو المشكلة أي انه لا يوجد حقل لدي يحمل هذا الاسم 

    قمت بمحاولة إزالة الصفر ولكن في وضع الاختيار الواحد نجح الامر ولكن في وضع اكثر من اختيار لم ينجح ظهور المشكلة السابقة

  12. بتاريخ 9 دقائق مضت قال Wael Aljamal:

    هذه الدالة تقبل معامل واحد مع قيمته، ولكي تستطع حل المشكلة، عليك تمرير غرض برمجي

    
    var p = cmd.CreateParameter();
    p.Name = "wael";
    p.age  = 24;
    cmd.Parameters.Add(p);

    لحل المشكلة بشكل أفضل، نمرر مصفوفة بأسماء المدن.

    
    var parameters = new string[100]; // أقصى عدد ممكن
    var index = 0;
    
    foreach (ListItem item in lstBoxTestCity.Items)
    {
    
      if (item.Selected)
      {
    	parameters[index] = string.Format("@stIdCity{0}", index);
        cmd.Parameters.AddWithValue(parameters[i], item.Value);
        index++;
      }
    }
    
    
    

    الآن في الاستعلام لديك، إن كنت تعمل شرط، استخدم المعامل IN في عبارة SQL

    توثيق موسوعة حسوب: معاملات المجال في SQL

    لأنه تم تمرير أكثر من دولة

    اهلا بك اخي الكريم

    شكرا على ردك

    استفسار  من اين احصل على [i] في السطر التالي بسبب ظهور عدم التعرف عليها:

      cmd.Parameters.AddWithValue(parameters[i], item.Value);

     

    61b66aac25969_Screenshot2021-12-13013252.png.4db82e1d1ac64ef9e4fd7175d3fa2a37.png

     

     

    الكود اصبح كالتالي:

     private void GetDtae()
            {
                string str = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
                using (SqlConnection con = new SqlConnection(str))
                {
                    using (SqlCommand cmd = new SqlCommand("Tprocedure", con))
                    {
                        cmd.CommandType = CommandType.StoredProcedure;
                        var parameters = new string[100];
                        var index = 0;
                            foreach (ListItem item in lstBoxTestCity.Items)
                        {
    
                            if (item.Selected)
                            {
    
                                parameters[index] = string.Format("@stIdCity{0}", index);
                                cmd.Parameters.AddWithValue(parameters[i], item.Value);
                                index++;
                                
                            }
                        }
    
                        SqlDataAdapter da = new SqlDataAdapter(cmd);
                        DataSet ds = new DataSet();
                        da.Fill(ds);
                        gvProducts.DataSource = ds;
                        gvProducts.DataBind();
    
                    }
                }
    
            }

     

  13. احاول ارسال قيم الى StoredProcedure

    من خلال :

    listbox يحتوي اسماء الدول احصل عليهم من قاعدة البيانات 

    المشكله لو قمت باختيار واحد حتى اقوم بارساله الكود يعمل بشكل سليم 100%100

    ولكن لو قمت بوضع اختيارين او 3 اختيارات على سبيل المثال  احصل على الخطاء التالي:

     

    Parameter '@stIdCity' was supplied multiple times.

    وموقع الخطاء يشير الى :

    Line 298:                    da.Fill(ds);

    الكود كامل كالتالي:

      protected void lstBoxTestCity_SelectedIndexChanged(object sender, EventArgs e)
            {
    
                string str = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
                using (SqlConnection con = new SqlConnection(str))
                {
                    using (SqlCommand cmd = new SqlCommand("Tprocedure", con))
                    {
                        cmd.CommandType = CommandType.StoredProcedure;
    
    
                        foreach (ListItem item in lstBoxTestCity.Items)
                        {
          
                            if (item.Selected)
                            {
                              
                            
                                cmd.Parameters.AddWithValue("@stIdCity", item.Value);
                          
                            }
                        }
                        
                        SqlDataAdapter da = new SqlDataAdapter(cmd);
                        DataSet ds = new DataSet();
                        da.Fill(ds);
                        gvProducts.DataSource = ds;
                        gvProducts.DataBind();
                        
                    }
                }
               
            }

     

    والقائمة كالتالي التي يختار منها المستخدم:

    61b65d3b18d45_Screenshot2021-12-13003532.png.7af41ed2c5481cf7a85b5fabcbabb05f.png

     

    كيف يمكن تجنب هذا المشكله وحل هذا الامر ياليت لو كان احد مر بنفس التجربه يفيدنا لو تكرمتو

    • أعجبني 1
  14. بتاريخ 31 دقائق مضت قال Wael Aljamal:

    أحاول الوصول لخاصية عدد الأعمدة، 

    يجب وضع خيار 

    
    autogeneratecolumns="false"
    
    =>
    
    int temp = GridView1.Columns.Count; // will return 6
    
    حسب المثال
    
    <asp:GridView ID="GridView1" autogeneratecolumns="false" runat="server">
        <columns>
            <asp:boundfield datafield="CustomerID" headertext="Customer ID"/>
            <asp:boundfield datafield="CompanyName" headertext="Company Name"/>
            <asp:boundfield datafield="Address" headertext="Address"/>
            <asp:boundfield datafield="City" headertext="City"/>
            <asp:boundfield datafield="PostalCode" headertext="Postal Code"/>
            <asp:boundfield datafield="Country" headertext="Country"/>
         </columns>
     </asp:GridView>

     

    ربي يرزقك جنات النعيم ويزيدك من واسع فضله وعلمه 

    نجح الامر 100%100 

    سوف اضع الكود للفائدة بعد التعديل:

      protected void lstBoxTest_SelectedIndexChanged(object sender, EventArgs e)
            {
    
                int temp = gvProducts.Columns.Count; 
    
     
                for (int i = 0; i < temp; i++)
                {
                    gvProducts.Columns[i].Visible = true;
    
                }
    
                foreach (ListItem item in lstBoxTest.Items)
                {
                    if (item.Selected)
                    {
                        if (item.Value == "1" )
                        {
    
                            gvProducts.Columns[1].Visible = false;
                        }
                     
                         else if (item.Value == "2")
                        {
    
                            gvProducts.Columns[2].Visible = false;
                        }
                        else if (item.Value == "3")
                        {
    
                            gvProducts.Columns[3].Visible = false;
                        }
                       
    
                    }
                }
    
    
                    }
                }

    ممكن استعماله في button او عن طريق لسته بشكل مباشر 

     

    مودتي لك 

    • أعجبني 1
  15. بتاريخ 16 ساعات قال Wael Aljamal:

    مع كل تبديل في حالة الاختيار، سيتم إرسال القائمة كاملة مع التعديلات، لذلك في كل مرة، يمكننا تحديد أن جميع الخيارات متاحة، ثم نعود و نزيل ما تم تحديده،

    • سأحاول تطبيق الفكرة: الأولى نعتبرهم جميعاً ظاهرين ثم نخفي ما تم تحديده
    1. ضعها قبل for each
    2. 
      const int gvProductsCount = gvProducts.Columns.Count;
      
      for (int i = 0; i < gvProductsCount; i++)
      {
        gvProducts.Columns[i].Visible = true;
      
      }
    3. ثم تأتي for each لتخفي ما تم اختياره.
    • الفكرة الثانية باستخدام if - else
    • 
      foreach (ListItem item in lstBoxTest.Items)
      {
        if (item.Selected)
        {
          // item 1
          if (item.Value == "1" )
          {
            gvProducts.Columns[1].Visible = false;
          }
          else {
            gvProducts.Columns[1].Visible = true;
          }
          // item 2
          if (item.Value == "2" )
          {
            gvProducts.Columns[2].Visible = false;
          }
          else {
            gvProducts.Columns[2].Visible = true;
          }
          // item 3
          if (item.Value == "3" )
          {
            gvProducts.Columns[3].Visible = false;
          }
          else {
            gvProducts.Columns[3].Visible = true;
          }
        }
      }

       

    اهلا بك اخي الكريم

    بنسبة الى الحل الثاني انا قمت بتطبيقه مسبقا if and else المشكله لو قمت باختيار اول اختيار على سبيل المثال وقمت بعدها بمحاولة اختيار ثانية يظهر الاختيار الاول وكانني قمت بازلة علامة الصح ويختفي الثاني يحدث امر مثل ذلك لذلك لم استعمله 

     

     

    بنسبة الى الحل الاول قمت بكتابته اعلى foreach ولكن تظهر لدي المشكله التاليه:

     61b61ac8758ea_Screenshot2021-12-12195224.png.78bebcf55836688ce0b1add4eeac03df.png

  16. قمت بعمل حقول متعددة للاختيار بشكل التالي: قمت بأخذ الشرح من هذا المقال

      http://www.codingfusion.com/Post/Dropdownlist-with-checkboxes-in-asp-net

    <asp:listbox runat="server" id="lstBoxTest" selectionmode="Multiple" AutoPostBack="True"
                 OnSelectedIndexChanged="lstBoxTest_SelectedIndexChanged">
    
      <asp:ListItem Value="2">الرقم </asp:ListItem>
      <asp:ListItem Value="3">الاسم</asp:ListItem>
      <asp:ListItem Value="4">البلد</asp:ListItem>
    
    
    </asp:listbox>

     

    وقمت بوضع دالة شرطيه مرتبطه لديه حتى استطيع اخفاء حقول من gridView  في حالة الاختيار من قبل المستخدم كالتالي:

    protected void lstBoxTest_SelectedIndexChanged(object sender, EventArgs e)
    {
    
      foreach (ListItem item in lstBoxTest.Items)
      {
        if (item.Selected)
        {
          if (item.Value == "1" )
          {
            gvProducts.Columns[1].Visible = false;
          }
          else if (item.Value == "2")
          {
            gvProducts.Columns[2].Visible = false;
          }
          else if (item.Value == "3")
          {
            gvProducts.Columns[3].Visible = false;
          }
        }
      }
    }

    الكود شغال في حالة وضع المربع في حالة الاختيار او وضع علامة الصح ولكن مشكلتي لو قمت بعملية تراجع الحقول لا تعود في الجريد فيو 

    قمت بمحاولة كتابة الكود بشكل التالي ولم يعمل :

    if (item.Value == "1" )
    {
      gvProducts.Columns[1].Visible = false;
    }
    else
    {
      gvProducts.Columns[1].Visible = true;
    }

     

    مع العلم اني قمت بتجربته في Checkbox وهيا تعمل ولكني ارغب باستعمال الطريقة التي في الأعلى على شكل قائمة

    كيف يمكن عمل الدالة الشرطية بشكل الصحيح في هذا الحالة لو تكرمتو ووضع شرط انهاء الاخفاء للحقول

    • أعجبني 1
  17. تحيه طيبه للجميع

    ارغب بتطبيق فكرة صلاحيات المختلفه لمستعملين الموقع لدي 

    ولكن لا ارغب بستعمل النظام الذي يقول مثلا ان لدي فقط مدير ومستخدم 1 ومستخدم 2 وما شابه هذا متعب وغير مجدي لو رغبة بعمل صلاحيات مختلفه لكل اقسام الموقع 

    هل توجد افكار مختلفه سبق وان قمتو بتطبيقها ؟بحيث يمكن التحكم بصلاحيات المستخدمين بشكل اكبر واكثر مرونة ؟

    ياليت من سبق وقام بافكار ممكن تفيدنا يشارك تفاصيلها  معنا حتى يمكن تطبيقها ولكم جزيل الشكر

  18. تحيه طيبه للجميع 

    انا اعلم طريقة اخفاء الادوات التي يتم اضافتها الى الصفحات وتحتوي على ID  على سبيل المثال TEXTBOX  

    ولكن انا لدي قائمة جانبيه كالتالي:

      <li class="nav-item">
                <a href="QueryPage.aspx" class="nav-link">
                  <i class="nav-icon far fa-image"></i> <p> الاستعلامات   </p>
                </a>
              </li>

    كيف استطيع التحكم فيهم والوصول لهم من صفحة aspx.cs وتعامل معها في حدث Page_Load على سبيل المثال 

    انا ارغب بوضع شرط مرتبط ب Session يمكنني من اخفاء هذا القائمة 

    كيف يمكن فعل ذلك وكيف استطيع الوصول الى هذا القوائم 

    ياليت من لديه فكره يفيدنا لو تكرمتو 

  19. لدي جدول بيانات في قاعدة sql server 

    يحتوي على المنتج وحجم المنتج وللون المنتج

    قمت بعمل Griedview لعرض بيانات هذا الجدول بالاضافة الى اضافة CheckBoxList لتصفية بيانات في هذا Griedview 

    المشكله الان انني مفترض في حالة اختيار CheckBox الاول اعرض  كامل المنتجات التي اسمها hp 

    ولو قمت باختيار CheckBox الثاني مفترض ان اضيف dell الى قائمة التصفية 

    ولكن ما يحدث الان في حالة اختيار اثنان من CheckBox لا احصل على نتائج بيانات ابد 

    ولكن لو قمت باختيار كل واحد على حده احصل على البيانات 

    صورة المشروع وهو يعمل بدون اختيار اي  CheckBox:

    11.thumb.png.c7db416a52470b37cd42128101d42ff1.png

    صورة المشروع في حالة اختيار واحد :

    619bb306b0482_Screenshot2021-11-22191046.thumb.png.36856707011068df380a4a5f413f9888.png

    صورة المشروع في حالة اختيار 2 وهو المشكله بتحديد:

    619bb354e0807_Screenshot2021-11-22191204.thumb.png.bcb9b8c11c4c51eb2e8049cfd7f48bb6.png

    جدول البيانات :

    CREATE TABLE [dbo].[Table]
    (
    	[Id] INT NOT NULL PRIMARY KEY IDENTITY, 
        [Item] NVARCHAR(MAX) NULL, 
        [size] NVARCHAR(MAX) NULL, 
        [colors] NVARCHAR(MAX) NULL
    )

    جدول Stored Procedures:

    
    CREATE procedure FilterStudentData
    (
      @stItem VARCHAR(15) = NULL
    
    )
    as
    begin
    
    
    SELECT * FROM [Table]
        WHERE (Item IN (@stItem, ',')) OR ISNULL(@stItem,'') = ''
    
    
    
    end

    الكود كامل:

    using System;
    using System.Collections.Generic;
    using System.Configuration;
    using System.Data;
    using System.Data.SqlClient;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    namespace WebApplication6.testpage
    {
        public partial class WebForm3 : System.Web.UI.Page
        {
          
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    PopulateProduct();
                }
            }
    
            private void PopulateProduct()
            {
                string str = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
                using (SqlConnection con = new SqlConnection(str))
                {
                    using (SqlCommand cmd = new SqlCommand("FilterStudentData", con))
                    {
                        cmd.CommandType = CommandType.StoredProcedure;
                        if (cblBrand.SelectedValue != "")
                        {
                            cmd.Parameters.AddWithValue("@stItem", GetCheckedItems(cblBrand));
                        }
                    /*    if (cblProcessor.SelectedValue != "")
                        {
                            cmd.Parameters.AddWithValue("@Processor", GetCheckedItems(cblProcessor));
                        }
                        if (cblRam.SelectedValue != "")
                        {
                            cmd.Parameters.AddWithValue("@Ram", GetCheckedItems(cblRam));
                        }
                        if (cblScreenSize.SelectedValue != "")
                        {
                            cmd.Parameters.AddWithValue("@ScreenSize", GetCheckedItems(cblScreenSize));
                        }
                        if (cblHardDrive.SelectedValue != "")
                        {
                            cmd.Parameters.AddWithValue("@HardDrive", GetCheckedItems(cblHardDrive));
                        }*/
                        SqlDataAdapter da = new SqlDataAdapter(cmd);
                        DataSet ds = new DataSet();
                        da.Fill(ds);
                        gvProducts.DataSource = ds;
                        gvProducts.DataBind();
                    }
                }
    
    
    
            }
    
            protected void PopulateProductByCategory(object sender, EventArgs e)
            {
                PopulateProduct();
            }
    
            private string GetCheckedItems(CheckBoxList checkBoxList)
            {
                string checkedItems = string.Empty;
                foreach (ListItem item in checkBoxList.Items)
                {
                    if (item.Selected)
                    {
                        checkedItems += item.Text + ",";
                    }
                }
                checkedItems = checkedItems.Remove(checkedItems.Length - 1);
                return checkedItems;
            }
    
            protected void Button1_Click(object sender, EventArgs e)
            {
    
            }
        }
    }

     

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm3.aspx.cs" Inherits="WebApplication6.testpage.WebForm3" %>
    
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                <div>
        <table>
            <tr>
                <td>
                    <table>
                        <tr>
                            <td>
                                Item
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <asp:CheckBoxList ID="cblBrand" runat="server" AutoPostBack="true" OnSelectedIndexChanged="PopulateProductByCategory">
                                    <asp:ListItem Text="hp" Value="1" />
                                    <asp:ListItem Text="dell" Value="2" />
                           
                                </asp:CheckBoxList>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                Size
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <asp:CheckBoxList ID="cblProcessor" runat="server" AutoPostBack="true" OnSelectedIndexChanged="PopulateProductByCategory">
                                    <asp:ListItem Text="100" Value="1" />
                                    <asp:ListItem Text="250" Value="2" />
                                </asp:CheckBoxList>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                Ram
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <asp:CheckBoxList ID="cblRam" runat="server" AutoPostBack="true" OnSelectedIndexChanged="PopulateProductByCategory">
                                    <asp:ListItem Text="4GB" Value="1" />
                                    <asp:ListItem Text="8GB" Value="2" />
                                </asp:CheckBoxList>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                colors</td>
                        </tr>
                        <tr>
                            <td>
                                <asp:CheckBoxList ID="cblScreenSize" runat="server" AutoPostBack="true" OnSelectedIndexChanged="PopulateProductByCategory">
                                    <asp:ListItem Text="14" Value="1" />
                                    <asp:ListItem Text="15" Value="2" />
                                </asp:CheckBoxList>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                Hard Drive
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <asp:CheckBoxList ID="cblHardDrive" runat="server" AutoPostBack="true" OnSelectedIndexChanged="PopulateProductByCategory">
                                    <asp:ListItem Text="500GB" Value="1" />
                                    <asp:ListItem Text="750GB" Value="2" />
                                    <asp:ListItem Text="1TB" Value="3" />
                                    <asp:ListItem Text="2TB" Value="4" />
                                </asp:CheckBoxList>
                            </td>
                        </tr>
                    </table>
                </td>
                <td rowspan="10">
                    <asp:GridView runat="server" ID="gvProducts" EmptyDataText="No record for this search criteria.">
                    </asp:GridView>
                  
                </td>
            </tr>
        </table>
    </div>
            </div>
        </form>
    </body>
    </html>

    هل يعلم احدكم كيف يمكن حل هذا المشكله ؟ 

    حقيقه من يومين ابحث عن حل لها ولم استطع ايجاد لها حل انا جديد قليلا على asp.net

    ايضا هل يمكن تنفيذ الطريقه هذا في تصفية البيانات بدون استعمل Stored Procedures؟

    قمت بالحصول على مثال المشروع من المقاله التاليه مع  تعديل قليلا ليتنساب مع متطلباتي :

    https://www.aspsnippets.com/questions/159681/Filter-GridView-based-on-multiple-CheckBoxList-like-Flipkart-in-ASPNet/

  20. حقيقه لدي استفسار ولكن لا اعلم كيف اوصل فكرته 

    لو قمة ببرمجة صفحة web من خلال c#

    عن طريق asp.net 

    كيف ممكن اعمل قاعدة بيانات مرتبطه بهذا الصفحه يمكن استعمالها بدون ان اضعها على استضافه اون لاين  وبدون ان اقوم بعمل   سيرفر محلي مثل wamp هل توجد طريقه؟

    ايضا لو كان الحاسوب هذا مرتبط مع مجموعة حواسيب ثانيه عن طريق شبكة داخليه لو قمث بمشاركة اختصار هذا الصفحه معهم هل توجد طريقه من اجل استخدام هذا القاعده ؟من الحواسيب الثانيه استعلام واضافه وحذف الخ..؟

  21. بتاريخ 11 ساعات قال سامح أشرف:

    في الواقع يوجد فرق بين Flutter و ASP.Net فكلًا منهما يمكنه أن يقوم بشيء مختلف عن الآخر، ويمكنك أن تستعمل كلاهما معًا حتى. وذلك لأن Flutter قد يتم إعتباره إطار عمل للواجهة الأمامية Frontend أي من خلاله تستطيع إنشاء الأزرار والنصوص والصور في المتصفح وحتى عمل طلبات Requests إلى أحد الخوادم (بإستخدام Dart - JavaScript) وبالتالي سوف تكون بحاجة إلى إنشاء واجهة خلفية للموقع Backend لكي تتحكم في الإعدادات وتقوم بعمل نظام لإدارة المستخدمين Users Management على سبيل المثال أو نظان إستيثاق Authentication  أو صلاحيات Authorization .. إلخ.

    على الجانب الآخر يمكنك أن تستعمل ASP.Net في الواجهة الخليفة Backend حيث أنه عبارة عن إطار عمل لإدارة الخدمات من خلال .NET و C# ومن خلاله تستطيع إنشاء واجهة خلفية لتطبيقات الويب أو سطح المكتب أو حتى تطبيقات الهواتف الذكية، ويوفر إطار العمل هذا دعم لعمل مواقع من نوع تطبيقات الصفحة الواحدة Single Page Application (SPA) مثل React و Angular و Vue وحتى Flutter.

    ليس هناك علاقة بين Flutter و الواجهة الخليفة Backend كما أشرت سابقًا، لذلك سيتقوف إختيارك على لغة الواجهة الواجهة الخلفية وما تريد أن تقوم ببنائه، في الغالب يتم إستعمال قواعد بيانات Microsoft SQL Server (MsSQL) في الواجهات الخليفة المنشئة بإستخدام ASP.Net، ولكن ليس شرطًا أن تستعملها، حيث يمكنك أن تستعمل MySQL و PostgreSQL وحتى Mongo DB أيضًا.

    هنا مقالة توضح الإختلافات بين بعض من أشهر قواعد البيانات:

    كما قد تم نشر بعض الأسئلة المشابهة عن أفضل Backend لتطبيقات Flutter وقد يكون من المفيد إلقاء نظرة عليها:

     

    شاكر لك اخي الكريم

  22. تحيه طيبه للجميع 

    لو بغيت اعمل برنامج ادارة الموارد البشريه على شكل صفحات انترنت ايهم افضل استعمال flutter web او asp.net? مع العلم ان المشروع بيكون على شبكه داخليه بين عدد من الاجهزه .

    مع العلم اني خبرتي في فلاتر حاليا اكبر وشغال عليها من فتره  ولكن ايضا ك مصادر يهمني الامر.

    ايضا لو فكرت استعمل فلاتر على سبيل المثال شو افضل قاعدة بيانات ممكن استعمالها في هذا الوضع؟ بحيث القاعده ستكون واحده ولكن يتم استعمالها من اجهزه مختلفه على الشبكه المحليه او الدخليه وليس على الانترنت ؟

    كذلك بنسبه ل asp.net هل تعتبر sql server مناسبه في هذا الوضع؟

    • أعجبني 1
  23. بتاريخ منذ ساعة مضت قال Wael Aljamal:

    ماذا تقصد بعملية الطرح هذه.

    اقوم بانقاص ما سبق وتم تحميله عن طريق الشبكه من قاعدة البيانات بدونه واجهت نفس المشكله مع اضافة صوره واحده جديده حتى بعد اضافته حسب ما اشرت انت سابقا

    maxAssets: 4 - imagesCounter,

×
×
  • أضف...