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

Edit Checkbox inside DataGrid

مغلق
بدأه القيثاره في 23 يناير 2007 · 19 رد · 2,035 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

أنا عضوة جديده وبصراحه استفدت كثير من هذا المنتدى..وعندي استفسار يمكن هو بسيط لكن بالنسبه لي صعب لاني مبتدئه في ASP.Net

طبعا بحثت في المواضيع ولا لقيت حل لمشكلتي فأتمنى أني استفيد من خبراتكم:)

سؤالي هو..عندي داتا بيس وأبغى اعبي داتا قريد منها.. الى الان لا يوجد مشكله..

المشكله تكمن في أن لدي فيلد نوعه bit وأبغى أعبيه في الداتا قريد في Checkbox طبعا هو يعمل كذا بس انا ابغى اعدل عليه

يعني أعمل تشك على نفس الفيلد يعني أبغى اعمل على بعضهم وبعضهم لا..طبعا قدرت اعمل هالشي لكن لازم استخدم

Update Command لكن مشكلتي ماابغى اعمل اب ديت لكل وحده أبغى اعمل تشك على أكثر من وحده ولما اضغط Button يعمل

أب ديت من نفس الكود..

ارفقت صوره من صفحتي وأتمنى أني أجد حل هنا:)

post-94054-1169552954_thumb.jpg

تم تعديل هذه المشاركة بواسطة القيثاره في 23 يناير 2007 في 15:23

#2

ممكن تستخدمي له while لكي تصل الى نتيجة :)

تم تعديل هذه المشاركة بواسطة بن مطيع في 23 يناير 2007 في 20:13

#3

ببساطة قومي بعمل لوب بطول الداتا قريد داخل الحدث Button واستدعي الدالة الخاصة بتنفيذ التعديل

في Update command يتم التنفيذ على صف واحد فقط وهو الذي تم الضغط عليه من خلال الداتا قريد

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

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

تم تعديل هذه المشاركة بواسطة kabrs في 23 يناير 2007 في 22:21

طريقة حماية الصفحة بالصورة العشاوائية Captcha

/index.php?showtopic=117870

#4

بن مطيع..

اهلا بك.. أخوي اعرف ماتقصد تماما لكن مشكلني كيف اضيف في داخل الداتا قريد تشك بوكس وتكون داينمك:)

مشكور أخوي لمساعدتك:)

#5

kabrs

رائع كل ماذكرته عملته.. ولكن مشكلتي كا قلت كيف أعمل تشك بوكس داخل داتا قريد ولما أعمل عليها تشك واضغط

البتون يروح يعمل اب ديت على نفس الداتا بيس..:)

هنا كود اني أعمل Create Checkbox..لكن للاسف لا يعمل:(

 Dim I As Integer
			Dim MyCheckbox(I) As Web.UI.WebControls.CheckBox
			For I = 0 To DG.Rows.Count
				Try
					MyCheckbox(I) = New CheckBox
					Me.Controls.AddAt(1, MyCheckbox(I))
					MyCheckbox(I).Visible = True
				Catch ex As Exception
					MsgBox(ex.Message)
				End Try
			Next

وهنا كود عمل الاب ديت على نفس الداتا بيس اذا ضغط البوتون بعد مايعمل تشك على اللي يبغى:) والحمدلله شغال:)

' Update Values

		Dim Conn As SqlConnection
		Dim UpdateReq As String
		Dim UpdateCmd As SqlCommand
		Conn = New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\UserAccess.mdf;Integrated Security=True;User Instance=True")
		UpdateReq = "UPDATE Requests SET TakingTraining = @TakingTraining WHERE (BadgeNo = @BadgeNo)"
		UpdateCmd = New SqlCommand(UpdateReq, Conn)
		UpdateCmd.Parameters.Add("@TakingTraining", Data.SqlDbType.Bit).Value = True
		Conn.Open()
		UpdateCmd.ExecuteNonQuery()
		Conn.Close()

مشكور والله خيو kabrs وأعتذر أن اطلت :)

#6

القيثاره

ابشري وبالصور كمان لكن للأسف لم استطع تحميل الصور من مركز رفع الصور :D :

عموماً انا رفعت الصور في المرفقات وهي مرتبه حسب الارقام

في البداية قومي بتجهيز DataGrid بحيث تضيفي عامود جديد من نوع Template وتضيفي فيه CheckBox من ToolBox

اتبعي الصور كتالي :

إضغطي بالزر الايمن على الDataGrid واختاري Show smart tag كما في الصورة التالي :

صورة رقم 1

اختاري Property Builder ثم Colmuns ثم تتبعي الصور التالية :

صورة رقم 2

بعد ذلك إضغطي على بالزر الايمن مرة اخرى على DataGrid واختاري Edit Template ثم العمود الجديد الذي اضفته كما في الصورة التالية :

صورة رقم 3

بعد ذلك قومي بإضافة CheckBox في ItemTemplate بسحب والإفلات كما تستطيعين التحكم بجميع خصائصه من تغيير ID والالوان والقيمة الافتراضيه ...إلخ

بعد ذلك إضغطي على End Template Editing كما في الصورة التالية :

صورة رقم 4

اخيراً ستظهر الشاشة التالية

صورة رقم 5

وبدأ الان التكويد طبعاً حتظيفي Button الخاص بالتعديل وسيكون كوده كتالي :

	Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
		''
		Dim Conn As New System.Data.SqlClient.SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\UserAccess.mdf;Integrated Security=True;User Instance=True")
		Dim Loops As Integer
		''
		Conn.Open()
		For Loops = 0 To Me.DataGrid1.Items.Count - 1
			Dim ResultCheckInColumn As CheckBox = Me.DataGrid1.Items(Loops).Cells(0).FindControl("CheckBox1")
			''
			Dim UpdateCmd As New System.Data.SqlClient.SqlCommand("UPDATE Requests SET TakingTraining = @TakingTraining WHERE BadgeNo = @BadgeNo ", conn)
			UpdateCmd.Parameters.Add("@TakingTraining", Data.SqlDbType.Bit).Value = ResultCheckInColumn.Checked
			UpdateCmd.Parameters.Add(Me.DataGrid1.Items(Loops).Cells(4).Text)
			''
			UpdateCmd.ExecuteNonQuery()
			''
		Next
		Conn.Close()
		''
	End Sub

طبعاً هذا الكود سيعمل بعد عرض البيانات على DataGrid

يجب تحديد رقم العمود في DataGrid والذي يحتوي على ID في الجدول الذي سيتم تحديد سجلات التعديل به عند إضافة قيمة البراميتر الخاصة ب BadgeNo

UpdateCmd.Parameters.Add(Me.DataGrid1.Items(Loops).Cells(4).Text)

انتي في هذا السطر غييري 4 إلى رقم العمود الذي يحتوي على قيمة الحقل BadgeNo بالترتيب بدء من اليسار واعتقد انو 4 كما في الصورة المرفقة

إن شاء الله يكون الشرح واضح وبالتوفيق

وأي سؤال احنا حاضرين

تم تعديل هذه المشاركة بواسطة kabrs في 24 يناير 2007 في 20:56

طريقة حماية الصفحة بالصورة العشاوائية Captcha

/index.php?showtopic=117870

#7

_

post-55305-1169658190_thumb.gif

post-55305-1169658374_thumb.gif

post-55305-1169658390_thumb.gif

post-55305-1169658409_thumb.gif

post-55305-1169658421_thumb.gif

تم تعديل هذه المشاركة بواسطة kabrs في 24 يناير 2007 في 21:01

طريقة حماية الصفحة بالصورة العشاوائية Captcha

/index.php?showtopic=117870

#8

أخوي kabrs مشكور والله على تعاونك تعبتك معي:(

بس عندي استفسار.. من وين أقدر أختار Property Builder ..جربت من Show smart tag بس ماتطلع معي.. اتمنى تساعدني:)

تم تعديل هذه المشاركة بواسطة القيثاره في 25 يناير 2007 في 17:52

#9

إذا ضغطتي على Show smart tag

يطلعلك مربع حوار شبيه بالتلميح ستجدي Property Builder أخر اختيار

عموماً Show smart tag موجودة فقط في الاصدار 2005

اذا كان الاصدار عندك 2003 ستجدينها مباشرة عند الضغط على الزر الايمن

طريقة حماية الصفحة بالصورة العشاوائية Captcha

/index.php?showtopic=117870

#10

أهلين أخوي kabrs

اعتذر لازعاجك..

ابدا ملتطلع لي Property Builder لما اضغط على Show smart tag

ماادري ليش..؟ هل فيه طريقه اوصل لها:( لما اضغط على Show smart tag يطلع لي كما هو واضح بالصوره المرفقه:(:(

انا اشتغل على 2005

post-94054-1169755073_thumb.jpg

#11

هذي الي فتحتي GridView وليست DataGrid

عموماً استخدمي DataGrid فهي بالنسبة إلي افضل

عادة إذا نزلتي فجوال استديو 2005 ماتنزل DataGrid في ال ToolBox انت الله يعينك تنزليها من الادوات المخفية كتالي :

إضغطي بالزر الايمن على الادوات الي في اليسار ToolBox واختاري Add بعدها يطلع مربع حوار في مجموعة من الادوات ابحثي عن DataGrid ولاحظي الي تكون خاصة ب Web Application وبعدين ضعي امامها صح وموافق .

بعد كذا حتلاحظي وجود DataGrid من بين الادوات .

طريقة حماية الصفحة بالصورة العشاوائية Captcha

/index.php?showtopic=117870

#12

kabrs

ألف شكر أخوي على مساعدتك من جد استفدت كثير.. جزاك الله كل خير..ووفقك واسعدك في دينك ودنياك

لكن للان عندي مشكله..سأوضح لك بالضبط ماذا اريد كي تستوعب..

انا في اللود للصفحه راح اقوم باظهار البيانات من الداتا بيس اللي ماانعمل لها تشيك(باستخدام شرط معين).. ويأتي المستخدم ويعمل تشك (وهذا كان اهميه ماشرحته لي من

ناحيه التشك بوكس داخل الداتا قريد) ثم يعمل اب ديت بضغط الزر..

هذا ملخص مااريده.. مشكلتي الان.. انا لاأعلم كميه المعلومات التي ستعرض للمستخدم عند دخوله في الصفحه(أي في اللود) فمره يمكن يكون فيه واحد مااتعمل له تشك

ومره 10 ومره ولا شي ومره 3 وهكذا.. مااريده بالضبط كيف أعمل عدد التشك بوكس داينمك؟ أي على حسب الصفوف يكون لدي تشك بوكس بعددها..؟

أعتذر جدا فأنا محرجه منك أخي kabrs ..وشكرا لك:)

#13

لا عادي مافي اي احراج وشكراً لك ايضاً :rolleyes:

اقتباس
انا في اللود للصفحه راح اقوم باظهار البيانات من الداتا بيس اللي ماانعمل لها تشيك(باستخدام شرط معين).. ويأتي المستخدم ويعمل تشك (وهذا كان اهميه ماشرحته لي من

ناحيه التشك بوكس داخل الداتا قريد) ثم يعمل اب ديت بضغط الزر..

هل تقصدين جميع السجلات التي لها القيمة الCheck= False في الحقل TrkingTraining

يعني جميع السجلات التي ستظهر عند تحميل الصفحة كل مرة ستكون قيمة CheckBox = false التي داخل الDataGrid

ويعني ان اي سجل تحددي له القيمة True لن يظهر مرة اخرى في DataGrid ؟؟

ماذا لو أردتي إلغاء Check من سجل معين كانت له القيمة True ؟؟

اقتباس
هذا ملخص مااريده.. مشكلتي الان.. انا لاأعلم كميه المعلومات التي ستعرض للمستخدم عند دخوله في الصفحه(أي في اللود) فمره يمكن يكون فيه واحد مااتعمل له تشك

ومره 10 ومره ولا شي ومره 3 وهكذا.. مااريده بالضبط كيف أعمل عدد التشك بوكس داينمك؟ أي على حسب الصفوف يكون لدي تشك بوكس بعددها..؟

طيب هذي بتصير في DataGrid بشكل تلقائي

مثلاً ناتج جملة الاستعلام 5 سجلات ، بمجرد اسناد DataSet إلى DataGrid ستظهر CheckBox في كل صف في DataGrid

بكره إن شاء الله ارفع لك مثال يوضحلك الصورة اكثر

طريقة حماية الصفحة بالصورة العشاوائية Captcha

/index.php?showtopic=117870

#14

أهلين أخوي kabrs

اقتباس
هل تقصدين جميع السجلات التي لها القيمة الCheck= False في الحقل TrkingTraining

يعني جميع السجلات التي ستظهر عند تحميل الصفحة كل مرة ستكون قيمة CheckBox = false التي داخل الDataGrid

بالضبط اخوي kabrs هذا مااريده

اقتباس
ويعني ان اي سجل تحددي له القيمة True لن يظهر مرة اخرى في DataGrid ؟؟

نعم هذا الهدف اني بس اغير القيم من False الى true

اقتباس
ماذا لو أردتي إلغاء Check من سجل معين كانت له القيمة True ؟؟

لا يحتاج برنامجي الى تغير القيمه من true الى false

اقتباس
طيب هذي بتصير في DataGrid بشكل تلقائي

عملت بالضبط نفس ماانت عامل وللاسف النتيجه بالاخير طلع لي واحد تشك بوكس عكس ماطلع لك:(

ادري ازعجتك خيو kabrs

اعتذر جدا واتمنى لك كل التوفيق

#15

طيب الموضوع بسيط ولنبحث فيه كما يلي:

أنت سوف تعرضين بيانات من جدول في DataGrid وسيظهر عمود CheckBox في كل سطر وعندما يقوم المستخدم بتحديده ويضغط زر Update سيتم تحديث بيانات السطر المحدد.

سنستخدم DataGrid:

<asp:DataGrid ID="dgItems" runat="server" AutoGenerateColumns="False" HorizontalAlign="Center" Width="700px">
	<Columns>
		<asp:BoundColumn DataField="PageTitle" HeaderText="عنوان الصفحة" />
		<asp:TemplateColumn HeaderText="خيارات">
			<ItemTemplate>
				<asp:CheckBox ID="cbAdd" runat="server" value='<%# Eval("ROW_ID_FROM_YOUR_TABLE") %>' />
			</ItemTemplate>
		</asp:TemplateColumn>
	</Columns>
</asp:DataGrid>

يجب تغيير أسماء الحقول بما يتوافق مع أسماء الأعمدة في جدولك.

الآن سنكتب شيفرة في حدث الضغط على زر Update وذلك لتحصيل الأسطر التي حدد فيها المستخدم الـ CheckBox:

foreach (DataGridItem dgItem in dgItems.Items)
{
	 CheckBox cbItem = (CheckBox)dgItem.FindControl("cbAdd");
	 if (cbItem.Checked)
	 {
		  // رقم يشير إلى سطر في قاعدة البيانات
		  string RowId = cbItem.Attributes["value"];

		  // تحديث قاعدة البيانات حسب الرقم RowId
	 }
}

إن شاء الله يكون هذا ما تبحثين عنه

#16

هذا المثال الي وعدتك فيه

مرفق ملف قاعدة بيانات اكسس ... يجب ان تكون داخل المجلد APP_Data فمشروعك وصفحة ASPX فيها المثال وكودها كتالي :

اي ملاحظة في الكود ممكن اشرحلك هيا وبالتفصيل الممل : :rolleyes:

<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

	Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
		''
		If Not Me.IsPostBack Then	
			''
			ViewData()
			''
		End If
		''
	End Sub

	Private Sub ViewData()
		''
		Dim Adapters As New Data.OleDb.OleDbDataAdapter("select Loca,dept,RequestNo,BadgNo from Requests where TakingTraining=false ", "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("~\App_Data\db.mdb"))
		Dim DS As New Data.DataSet
		Adapters.Fill(DS)
		Me.DataGrid1.DataSource = DS
		Me.DataGrid1.DataBind()
		''
	End Sub

	Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
		''
		Dim CheckCount As Integer = 0
		For Loops As Integer = 0 To Me.DataGrid1.Items.Count - 1
			Dim ResultCheck As CheckBox = Me.DataGrid1.Items(Loops).Cells(0).FindControl("CheckBox1")
			If ResultCheck.Checked Then
				CheckCount += 1
				Me.DataGrid1.Items(Loops).Cells(0).BackColor = Drawing.Color.RosyBrown
			Else
				Me.DataGrid1.Items(Loops).Cells(0).BackColor = Me.DataGrid1.Items(Loops).Cells(1).BackColor
			End If
		Next
		''
		Me.Label1.Text = "Checked Results =" & CheckCount.ToString
		''
	End Sub

	Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs)
		''
		Dim SQLStatment As String = ""
		''
		For Loops As Integer = 0 To Me.DataGrid1.Items.Count - 1
			Dim ResultCheck As CheckBox = Me.DataGrid1.Items(Loops).Cells(0).FindControl("CheckBox1")
			If ResultCheck.Checked Then
				SQLStatment &= Me.DataGrid1.Items(Loops).Cells(4).Text
				SQLStatment &= "','"
			End If
		Next
		''
		If SQLStatment.Length > 0 Then SQLStatment = SQLStatment.Remove(SQLStatment.Length - 3, 3)
		''
		Dim Conn As New Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("~\App_Data\db.mdb"))
		Dim UpdateCommand As New Data.OleDb.OleDbCommand("UPDATE Requests SET TakingTraining=True  WHERE BadgNo in ('" & SQLStatment & "') ", Conn)
		''
		Conn.Open()
		UpdateCommand.ExecuteNonQuery()
		Conn.Close()
		''
		ViewData()
		''
	End Sub

	Protected Sub Button3_Click(ByVal sender As Object, ByVal e As System.EventArgs)
		''
		For Loops As Integer = 0 To Me.DataGrid1.Items.Count - 1
			Dim ResultCheck As CheckBox = Me.DataGrid1.Items(Loops).Cells(0).FindControl("CheckBox1")
			ResultCheck.Checked = True
		Next
		''
	End Sub

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
	<title>الفريق العربي للبرمجة</title>
</head>
<body>
	<form id="form1" runat="server">
	<div>
		<table align="center" width="90%">
			<tr>
				<td align="center">
					<asp:DataGrid ID="DataGrid1" runat="server" BackColor="White" BorderColor="#DEDFDE"
						BorderStyle="None" BorderWidth="1px" CellPadding="4" ForeColor="Black" GridLines="Vertical"
						Width="100%">
						<FooterStyle BackColor="#CCCC99" />
						<SelectedItemStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" />
						<PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" Mode="NumericPages" />
						<AlternatingItemStyle BackColor="White" />
						<ItemStyle BackColor="#F7F7DE" />
						<HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" />
						<Columns>
							<asp:TemplateColumn HeaderText="TakingTraining">
								<ItemTemplate>
									<asp:CheckBox ID="CheckBox1" runat="server" />
								</ItemTemplate>
							</asp:TemplateColumn>
						</Columns>
					</asp:DataGrid></td>
			</tr>
			<tr>
				<td align="center">
					<asp:Label ID="Label1" runat="server" Text="Checked Results ="></asp:Label><br />
					 <asp:Button ID="Button3" runat="server" OnClick="Button3_Click" Text="Select All"
						Width="184px" />
					   
					            
					<asp:Button ID="Button2" runat="server" Text="Update" Width="184px" OnClick="Button2_Click" />
					        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click"
						Text="Check selected" Width="184px" /><br />
					</td>
			</tr>
		</table>

	</div>
	</form>
</body>
</html>

Example.zip

تم تعديل هذه المشاركة بواسطة kabrs في 28 يناير 2007 في 21:06

طريقة حماية الصفحة بالصورة العشاوائية Captcha

/index.php?showtopic=117870

#17

إسماعيل عنجريني

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

شكرا لك وجزيت كل خير

تم تعديل هذه المشاركة بواسطة القيثاره في 30 يناير 2007 في 11:14

#18

kabrs

بجد انا جدا محرجه منك ومن كرم اخلاقك

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

الف شكر لاتكفيك والله يوفقك دنيا وآخره

#19

اختي القيثاره

اسعدني ردك وربي يوفقك دنيا واخرة وإن شاء الله ما اقصر معاك بشيء انا اعرفه

طريقة حماية الصفحة بالصورة العشاوائية Captcha

/index.php?showtopic=117870

#20

kabrs

جزاك الله كل خير:):)

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

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