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

تقسيم عرض البيانات على أكثر من عمود فى gridview

مغلق
بدأه ccmfe2003 في 6 أغسطس 2007 · 16 رد · 1,824 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

بدل ما تظهر كده 1

2

3

4

5

6

تظهر كده مثلا

1 4

2 5

3 6

اللى أتا عملته بقى ينشيء جدول ويعمل كل حاجه مظبوط بس المشكله أن الشكل مطلعش معقول

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

	For a = 0 To DS.Tables(0).Rows.Count - 1
Dim x As New ButtonField
					x.Text = DS.Tables(0).Rows(a).ItemArray(0).ToString()
					' x.ShowHeader = True
					'  x.ButtonType = ButtonType.Button
					' Tbl.Rows(j).Cells(i).Text = DS.Tables(0).Rows(a).ItemArray(0).ToString()
					c.Controls.Add(xx)
					With GV.Columns
						.Add(New CommandField)
						.Add(x)
					End With
next

تم تعديل هذه المشاركة بواسطة ccmfe2003 في 6 أغسطس 2007 في 19:57

#2

والله في مثل هذه الحالة أقسم List التي أجلبها إلى قسمين بجلب نصف عددها مرة والنصف الآخر مرة أخرى

اذا أحببت أعمل لك مثال صغير انتظر عليي ساعات قليلة فقط فأنا مشغول قليلا

تم تعديل هذه المشاركة بواسطة Arwany في 7 أغسطس 2007 في 09:35

#3

شكرا جدا أخي arwany وياريت حضرتك تعملي المثال لما تكون فاضي بس هو ممكن أخلى اللي columns تكون command columns يعني لما يضغط عليها تعمل select

تم تعديل هذه المشاركة بواسطة ccmfe2003 في 7 أغسطس 2007 في 13:55

#4

السلام عليكم

أنا اللى وصلتله أخي arwany حتى الأن هو الأتي

 Dim txt As String = "   Select one..."
		Dim Conn As New SqlConnection(ConfigurationManager.ConnectionStrings("MyDB").ConnectionString)
		Dim Adapter As New SqlDataAdapter("SELECT TOP 5 CategoryName FROM MainField WHERE CategoryName <> '" & txt & "' ", Conn)
		Dim DS As New Data.DataSet
		If Not Conn.State = Data.ConnectionState.Open Then
			Conn.Open()
			Adapter.Fill(DS)
			Conn.Close()
		End If
		GridView1.DataSource = DS.Tables(0)

		GridView1.DataBind()
Dim  a As Integer
 For a = 0 To 4
 Dim x As New ButtonField
			x.Text = DS.Tables(0).Rows(a).ItemArray(0).ToString()
 With GridView1.Columns
				.Add(New CommandField)
				.Add(x)
			End With
GridView1.DataBind()

لكن المشكله أن العمود كله بياخد نفس القيمه أنا عايز field واحد بس هو اللى ياخد أول قيمه وهكذا

#5

مش عارف انا مش فاهم عليك او انه عندك خطأ بمفهوم rows & columns

فانت حسب ماطلبت في الاول عايز يكون عندك عمودين columns وخمسة صفوف rows

لذلك نعمل

GridView1.Columns.Add(New CommandField)

GridView1.Columns.Add(New CommandField)

بهذا نكون اضفنا العمودين وبعد ذلك نضيف الصفوف

for a=0 to 4

GridView1.rows.add

next

وبعدين نضع القيم

GridView1.rows(0).cell(0) =1

GridView1.rows(0).cell(1) =6

هو هذا كلام مش كود 100% لكن هذه الفكرة

#6

ِشكرا أخي طارق على ردك لكن مفيش أساسا gridview1.rows.add

وأنا مش أصدي أنه لازم عمودين وخمس صفوف أنا أصدي أن الداتا الللى عندي كلها تظهر فى الGridview من غير paging يعني أعرض 5 أو 6 أو 7 على حسب ما أنا عايز والباقي يظهر فى العمود اللى جنبه ويظهروا على شكل button أو link يعني ياخدوا القيمه .commandname="select"

ولما يضغط على أي قيمه أنفذ الأوامر اللى أنا عايزها أو أعرضله داتا تانيه معتمده على اللى هو أختاره وياريت لو ممكن مثال بعد أذنك لو ممكن؟

تم تعديل هذه المشاركة بواسطة ccmfe2003 في 7 أغسطس 2007 في 19:50

#7

في الكود السابق حصل تداخل بين asp.net & vb.net لكن يمكنك من خلال عمل datatable

Dim dt As New DataTable

dt.Columns.Add("a1")

dt.Columns.Add("a2")

Dim r As DataRow = dt.Rows.Add()

r(0) = 111

r(1) = 111

Gridview1.DataSource = dt

Gridview1.DataBind()

#8

شكرا أخي طارق لكن ألا يمكن وضع hyperlink أو buttons فى الcells ونديها الأسم اللى أحنا عايزينه؟

#9

إيه يا جماعه هو مفيش حل لمشكلتي ولا إيه اللى أنا عايزه تاني أعرض البيانات فى أعمده متصله بهذا الشكل والحمدلله وصلتلها بس المشكله أنه نوع البيانات لازم يكون txt بس لكن مثلا لو عايز أعرض صور أو أعرض commandfield بهذا الشكل

1 6

2 7

3 8

4 9

5

#10

أعتقد انه ممكن تحقيق ما تود بالRepeater أسهل

#11

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

لكن مشكلة الrepeater أنه يا horizontal يا vertical

#12

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

لذلك يمكنك استخدام response.write عن طريق عمل جدول (وال gridview هي جدول جاهز ) وعمل بداخل هذا الجدول ما تريد من ادوات وتنسيق اي كما يفعل مبرمجي PHP

#13

اخواني الكرام...

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

الحل هو أن أقوم بتقسيم Query إلى قسمين

فالخطوة الأولى : جلب عدد عناصرها

الخطوة الثانية : جلب القسم الأول

الخطوة الثالثة : جلب القسم التالي وهنا ال SQLs الخاصة بالعملية على النحو التالي

سأفترض أن هنالك جدولا يحتوي أسماء الدول

CountryTable (CID,CountryName,CountryDesc)

ونريد تقسمه إلى قسمين

القسم الأول سيعرض العدد الأول

والقسم الثاني سيعرض العدد الثاني

حسنا ... سنأتي بعدد البيانات من SQL التالي:

SELECT Count(*) FROM CountryTable

هلأ هذا الرقم سنقسمه إلى قسمين ونأخذ الرقم من دون باقي بالطريقة البرمجية المعروفه %

لنفرض أنه نتج لدينا 99 وقسمنها إلى 2 حصلنا على 49 والباقي 50

هلأ سنأخذ الرقم 50 وليس الصغير (هكذا تعودنا أن نبدأ بالعرض من القسم الأكبر)

سنكتب الاستعلام التالي:

SELECT TOP 50 *  FROM CountryTable ORDER BY CountryName

لاحظ أننا رتبنا حسب اسم الدولة

هلأ سنقوم بعمل حذف لهذا الاستعلام من الاستعلام الثاني للجدول الثاني كالتالي:

SELECT * FROM CountryTable Where CID not in (SELECT TOP 50 *  FROM CountryTable ORDER BY CountryName)

نلاحظ بهذه الطريقة أننا قمنا بحذف القسم المستعلم عنه أولا وحصلنا على ما نريد باللعب بال SQL بدون التعامل برمجيا

قد يسأل أحدنا فيقول كيف أطلق هذا العمل في الصفحة ؟؟

أجيب باختصار في حدث PreInt للصفحة قم باسناد الاستعلامات برمجيا

استعلم عن عدد السجلات الموجودة في الاستعلام الأساسي الذي تريد أن تقسمه

ومن ثم قم بأخذ الرقم وتكوين SQL لعنصرين SqlDataSource لكل جدول GridView في زمن التشغيل RunTime

أنا صراحة أستخدم طرق أخرى تعتمد على Class Bind وتقسم المشروع

الطريقة التي أستخدمها هي بناء

List<Type>

في زمن التشغيل وتقسيم محتوياتها إلى العدد المطلوب (بطريقة برمجية سهلة لا داعي لذكرها) ومن ثم الاسناد لل GridView المناسب

#14

شكرا أخي طارق طيب عندي سؤال هل لو أنا حليتها بأني عملت 4 جريد فيو وعرضت فيهم البيانات على شكل أعمده متصله هل هذا حل أحترافي ولا لأ؟ كان اللعب كله فى أختيار أول 4 حقول لأول جريد فيو وأختيار اللى بعدهم لتاني جريد فيو وهكذا سؤالي بس هل لو حد شاف الحل ده هيكون عادي ولا هيقول أنه حل أي كلام

#15

شكرا أخي Arwany على ردك وحلك انا اللى عملته شبيه بكده بس عرضته فى 4 جريد فيو لأني أريد أن أعرض الصور فى 4 صفوف و5 أعمده

#16

أخي الكريم ccmfe2003

دائما في لكل مشكلة أكثر من حل

ولكننا نبحث عن الحل الأمثل , الأسرع , والأفضل للتطوير المستقبلي (صح ولا لأ!)

#17

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

هذا الموضوع مغلق.

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