الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

grid view delete link

بدأه shamy789 في 12 فبراير 2011 · 16 رد · 1,336 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مساء الخير يا شباب

عندى Grid view عاوز اعمل منها delete ولكن المشكلة ان ال Grid view جواها Forign key فاللينك Delete مش بيشتغل ويجب كتابة كود داخل GridView1_RowDeleting event

انا كتبت هذا الكود

    protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        string id = e.RowIndex.ToString();

        SqlConnection con=new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
        SqlCommand cmd=new SqlCommand("DELETE FROM Orders WHERE id = @id",con);
        cmd.Parameters.Add("@id",SqlDbType.Int);
        cmd.Parameters["@id"].Value=Convert.ToInt32(id);

        try
        {
            con.Open();
            cmd.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            Response.Write(ex);
        }
        finally
        {
            con.Close();
        }
    }

المشكلة يا شباب ان لاحظت ان اوقات اللينك يقوم بالمسح من الداتا بيز واوقات اخرى لا يمسح واتوقع ان المشكلة تخص id

فممكن حد لو عنده فكرة ...... يرشدنا ....... وشكرا جزيلا .

#2

جرب حذ السجلين معا بنفس الاجرائية المخزنة .....................

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

#3
Tammam_KD كتب:

جرب حذ السجلين معا بنفس الاجرائية المخزنة .....................

متأسف .... مش فاهم .... ممكن توضح اكثر

#4

ال stored proccesser اللي انت مستخدمها للحذف قم بوضع استعلامين فيها يقةمان بالحذف الاول للحذف من الجدول الابن الذي يحوي المفتاح الخارجي

والثاني للجدول الاب الذي يحوي المفتاح الرئيسي مثلا........:

delete from table1 where fk=value;
delete from table1 where pk=value;

لاحظ وجود الفاصلة المنقوطة بالاستعلام

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

#5
Tammam_KD كتب:

ال stored proccesser اللي انت مستخدمها للحذف قم بوضع استعلامين فيها يقةمان بالحذف الاول للحذف من الجدول الابن الذي يحوي المفتاح الخارجي

والثاني للجدول الاب الذي يحوي المفتاح الرئيسي مثلا........:

delete from table1 where fk=value;
delete from table1 where pk=value;

لاحظ وجود الفاصلة المنقوطة بالاستعلام

انا مش مستخدم Stored Procedure

انا عندى جدولين Order & Product

المفروض اليوزر العادى يدخل يعمل Order

والمفروض الادمن ليه صلاحيه انه يسمح ال Order .

جوة ال order table يوجد foreign key اللى هو Product _id

فانا فى مشكله فى ال Delete

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

#6

آآآآه أسف ما انتبهت كتير عل الكود ................ طب حط المثال لو سمحت وبحاول اساعدك

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

#7

اوك يا باشا الموضوع باختصار هبسطهولك نفترض مثلا انى انا عندى شركة بتاعة مياة غازية ...... مثلا يعنى :)

والشركة دى شغالة فى 3 انواع (بيبسى ، سفن اب ، ميرندا )

يبقى عندى فى الDB

جدول اسمة Product وهيكون فيه

  ProductId     primarykey    
ProductName 
ProductImage image

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

فكدا لازم يكون عندنا جدول تانى اسمه Orders وهيكون فيه

id
Name
Productid  ------------ Foriegn key
Mobile
Email
Date

تمام لحد كدا ـــــــــــــــــــــــــــــــــــــــــــــــــــ

جوة صفحة Send Orders.aspx هيكون فيه

protected void Button1_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
        SqlCommand cmd = new SqlCommand("insert into Orders(Name,Productid,Mobile,Email,date)values(@name,@pid,@mob,@Email,default)", con);

        SqlParameter p1 = new SqlParameter("@name", SqlDbType.NVarChar, 50);
        SqlParameter p2 = new SqlParameter("@pid", SqlDbType.Int,32);
        SqlParameter p3 = new SqlParameter("@mob", SqlDbType.NVarChar, 50);
        SqlParameter p4 = new SqlParameter("@Email", SqlDbType.NVarChar, 50);

        p1.Value = txtname.Text;
        p2.Value = DropOrder.SelectedItem.Value;
        p3.Value = txtMobile.Text;
        p4.Value = txtEmail.Text;

        cmd.Parameters.Add(p1);
        cmd.Parameters.Add(p2);
        cmd.Parameters.Add(p3);
        cmd.Parameters.Add(p4);

        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();
}

وبكدا يبقى انا خليت اليوزر يقدر يعمل order .................... تمام كدا .....

طيب هعمل صفحة تانية خاصة بالادمن واسمها SeeOrders.aspx

هنا انا عاوز اعرض جدول orders ولكن بدل ال productid اللى هو Foriegn key هعرض Product name

طيب هحط على الفورم SQL dataSource

وساعه لما اختار الQuery لازم اكتبة بايدى لانى هرجع بيانات من جدولين وليس من جدول واحد

فهكتبله جملة ال Select

SELECT Name, ProductName,Mobile,Email,Date
 From Orders,Products
Where  Orders.Productid = Products.ProductId

لحد كدا انا لو عملت run هلاقى الحاجة شغالة تمام

طيب افرض order شفته ونفذته وعاوز امسحه خلاص ازاى بقى اعمل Delete Row ؟؟؟؟؟؟؟؟

طبعا كدا اكيـــــــــد حضرتك فهمت انا عاوز اعمل ايه بالظبط ...؟؟؟؟؟

انا من خلال البحث ع النت عرفت ان فى Event اسمه RowDeleting

كتبت الكود جواه

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        string id = e.RowIndex.ToString();
        SqlConnection con=new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
        SqlCommand cmd=new SqlCommand("DELETE FROM Orders WHERE id = @id",con);
        cmd.Parameters.Add("@id",SqlDbType.Int);
        cmd.Parameters["@id"].Value=Convert.ToInt32(id);

        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();

ولكن مشكلته ساعات بيمسح وساعات لا .... مش عارف ليه ..... غالبا فى حاجة فى ال id

انا كتبتلك الحاجة كلها اهى ولو حضرتك تقدر تفدنى هكون شاكر ليك جدا جدا

وميرسى مقدما .............

#8

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

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

#9

شكرا ليك ...

بص انا عملت حل مؤقت ..... عملت Dropdownlist الادمن هيختار منها ويدوس على Button يعملو Delete

    protected void Button1_Click(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
        SqlCommand cmd = new SqlCommand("DELETE FROM Orders WHERE id = @id", con);
        SqlParameter p1 = new SqlParameter("@id", DropDownList1.SelectedItem.Value);
        cmd.Parameters.Add(p1);
        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();
        DropDownList1.DataBind();
        GridView1.DataBind();
    }

بس الحل اللى نفسى انفذه انى زى ما حضرتك قلت اعمل Button فى كل Row ويعملى Delete بس للاسف لا اعرف الطريقة

#10

الطريقة سهلة جدا أخي الكريم ........... قم بوضع templete failed جديد من قائمة الغريد فيو واجعله فارغ ثم قم بتحرير الغريد فيو واسحب زر لداخلها ........ انقر فوق الزر نقرتين يتم توليد الحدث ....... يبقى عليك البرمجة :happy:

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

#11

تمام اخى منا بعرف اسحبه واحطه Template Filed ولكن مشكلتى فى خطوه البرمجة :wub:

يعنى الcondetion هنا هيكون ايه اللى همسح على اساسه

يعنى فى ال Drop Drop مثلا هو بيجيب ال value من ال id ويمسح

لكن فى حالتنا دى هنقله ال condition ازاى :wacko:

#12

عملت كدا بس طلع ايرور

SqlParameter p1 = new SqlParameter("@id", GridView1.SelectedRow.RowIndex);

:mellow:

#13

ضع الكود التالي لاستخلاص ID

GridView1.SelectedRow.Cells[CellNumber].Text;

وبفرض عندك غريد فيو رح يكون عندك أكثر من عمود

العمود الأول ID

الثاني name

الثالث prod ................. إلى آخره ........ المهم

انت بدك اتشوف ID هو اي عمود ........ واستبدل CellNumber برقم العمود علما أن الترقيم يبدأ من الصفر

أرجو أن تكو قد حلت المشكلة

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

#14

اشكرك اخى ولكنه طلع Exception

Object reference not set to an instance of an object.

المفروض id دا رقم صحيح

GridView1.SelectedRow.Cells[CellNumber].Text;

وهنا القيمة اللى هترجع هتكون String

حاولت ابحث عن gridview1.selectedrow.cells[0].value

لكن لا يوجد

#15

لالالالالالالالا

خلاص اشتغلت تمام .......... كان بس فى خطأ فى ترتيب ال Columns من عندى

شكرا يا باشا ....... تعبتك معايا

#16

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

قم بإجراء عملية تحويل قصري لها كما يلي :

int i = int.Parse("123");

عندها سيتعامل مع النص الذي هو 123 على أساس أنه الرقم 123

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

#17

نعم اخى اعرف هذه المعلومة

اشكرك لاهتمامك الشديد :)

مواضيع مشابهة