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

عمل textbox واحد للبحث عن جميع الكلمات في الأخبار

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

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

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

ملاحظة : TextBox خاصة للبحث

على سبيل المثال :

لدي حقل واحد في قاعدة البيانات ، ويخزن في هذا الحقل مواضيع وأخبار (طويلة وعريضة) * :rolleyes:

وأريد أن أبحث عن موضوع ، بطريقة أن أكتب في TextBox واحد فقط عن جميع الكلمات التي أريد البحث عنها في الموضوع .

أما الحل التقليدي : هو أن انشيء أعداد من Textbox للبحث وهذا العمل غير محترف .

كيف أعمل Textbox واحد فقط للبحث عن عدة كلمات في الموضوع .

تم تعديل هذه المشاركة بواسطة habeab في 19 يوليو 2007 في 11:24

اللهم صلي على محمد وعلى آله وصحابته أجميعن إلى يوم الدين

#2

بامكانك الاطلاع على كود البحث التالى بحيث تظع txtSearch للبحث و RadioButtonList (النص تماماً-جميع الكلمات-أى كلمة) ......................

   '************************
		'  Quick Search Handler
		'  by bassam alqadhi
		'  ajax-y@hotmail.com
		'************************
		Private Sub btnQuickSearch_Click(ByVal s As System.Object, ByVal e As System.EventArgs) Handles btnQuickSearch.Click
			Dim sSearchStr As String
			Dim sSearchType As String
			Dim sDbWhere As String

			' Get Search Criteria
			sSearchStr = txtSearch.Text

			' Get Search Type
			sSearchType = rdoSearchType.SelectedItem.Value

			' Construct SQL
			If sSearchStr <> "" Then
				ResetPageProperties() ' Reset Page Properties
				sDbWhere = ""
				sSearchStr = Replace(sSearchStr, "'", "''")
				sSearchStr = Replace(sSearchStr, "[", "[[]")
				If sSearchType <> "" Then
					While InStr(sSearchStr, "  ") > 0
						sSearchStr = Replace(sSearchStr, "  ", " ")
					End While
					Dim sArrSearchStr() As String = Split(sSearchStr, " ")
					Dim sKeyword As String
					For Each sKeyword In sArrSearchStr
						sDbWhere += "("
						sDbWhere += "[d_news_title] LIKE '%" & Trim(sKeyword) & "%' OR "
						sDbWhere += "[d_news_desc] LIKE '%" & Trim(sKeyword) & "%' OR "
						sDbWhere += "[d_news_author] LIKE '%" & Trim(sKeyword) & "%' OR "
						If Right(sDbWhere, 1) = "(" Then
							sDbWhere = Left(sDbWhere, Len(sDbWhere) - 1)
						ElseIf Right(sDbWhere, 4) = " OR " Then
							sDbWhere = Left(sDbWhere, Len(sDbWhere) - 4)
							sDbWhere = sDbWhere & ") " & sSearchType & " "
						End If
					Next
				Else
					sDbWhere += "[d_news_title] LIKE '%" & Trim(sSearchStr) & "%' OR "
					sDbWhere += "[d_news_desc] LIKE '%" & Trim(sSearchStr) & "%' OR "
					sDbWhere += "[d_news_author] LIKE '%" & Trim(sSearchStr) & "%' OR "
				End If
				If Right(sDbWhere, 4) = " OR " Then sDbWhere = Left(sDbWhere, Len(sDbWhere) - 4)
				If Right(sDbWhere, 5) = " AND " Then sDbWhere = Left(sDbWhere, Len(sDbWhere) - 5)
				Session("d_news_DbWhere") = "(" & sDbWhere & ")"

				' Bind to Data Control
				BindData()
			End If
		End Sub

وهذا كود عرض النتائج فى DataGrid

		'************************
		'  Bind Data to Control
		'************************

		Sub BindData()

			' Get Connection String
			Dim sConnStr As String = ewdb.ewConnStr

			' Construct SQL statement
			Dim sSelect As String
			sSelect = "SELECT * FROM [d_news]"
			sDbWhere = Session("d_news_DbWhere")

			' Construct WHERE Clause
			If sDbWhere <> "" Then
				sSelect += " WHERE " & sDbWhere
			End If

			' Construct ORDER BY Clause
			Dim sDefaultOrder As String = ""
			Dim sDefaultOrderType As String = ""
			If Session("d_news_SortExpression") <> "" Then
				sSelect += " ORDER BY [" & Session("d_news_SortExpression") & "] " & Session("d_news_SortOrder")
			ElseIf sDefaultOrder <> "" Then
				sSelect += " ORDER BY [" & sDefaultOrder & "] " & sDefaultOrderType
				SortRtn(sDefaultOrder, sDefaultOrderType)
			End If
			lblSql.Text = sSelect

			' Default DataView Object
			Dim dvWrk As DataView

			' Get DataView
			' For custom Next Prev Pager

			Dim sTable As String
			sTable = "d_news"
			lblRecordCount.Text = CStr(ewdb.ewRecordCount(sConnStr, sTable, sDbWhere))
			txtPager.Text = CStr(CLng(CLng(lblCurrentIndex.Text) / CLng(lblPageSize.Text) + 1))
			If (CLng(lblRecordCount.Text) Mod CLng(lblPageSize.Text)) > 0 Then
				NoOfPages.Text = CStr(Fix(CLng(lblRecordCount.Text) / CLng(lblPageSize.Text) + 1))
			Else
				NoOfPages.Text = CStr(Fix(CLng(lblRecordCount.Text) / CLng(lblPageSize.Text)))
			End If

			' First page - Disabled First & Prev Buttons
			If CLng(txtPager.Text) <= 1 Then
				btnPagerFirst.ImageUrl = "images/firstdisab.gif"
				btnPagerFirst.Enabled = False
				btnPagerPrev.ImageUrl = "images/prevdisab.gif"
				btnPagerPrev.Enabled = False
			Else
				btnPagerFirst.ImageUrl = "images/first.gif"
				btnPagerFirst.Enabled = True
				btnPagerPrev.ImageUrl = "images/prev.gif"
				btnPagerPrev.Enabled = True
			End If

			' Last page - Disabled Next & Last Buttons
			If CLng(txtPager.Text) >= CLng(NoOfPages.Text) Then
				btnPagerNext.ImageUrl = "images/nextdisab.gif"
				btnPagerNext.Enabled = False
				btnPagerLast.ImageUrl = "images/lastdisab.gif"
				btnPagerLast.Enabled = False
			Else
				btnPagerNext.ImageUrl = "images/next.gif"
				btnPagerNext.Enabled = True
				btnPagerLast.ImageUrl = "images/last.gif"
				btnPagerLast.Enabled = True
			End If
			dvWrk = ewdb.ewDataViewPage(sConnStr, sSelect, CLng(lblCurrentIndex.Text), CLng(lblPageSize.Text))

			' Check Dataview Object
			If IsNothing(dvWrk) Then ' Error
				lblMessage.Text = Session("dberrmsg")
				lblSql.Visible = True
				Exit Sub
			Else ' Normal
				lblSql.Visible = False
			End If

			' Set the DataSource property
			ctlList.DataSource = dvWrk

			' Bind to Data Control
			ctlList.DataBind()

			' Hide Grid/Pager if No Records Found
			If dvWrk.Count = 0 Then
				pnlDataGrid.Visible = False
				If lblMessage.Text = "" Then
					lblMessage.Text = "لا توجد بيانات بهذة المواصفات"
				End If
			Else
				pnlDataGrid.Visible = True
			End If
		End Sub

----------------------------

   '*************************
		'  Reset Page Properties
		'*************************

		Private Sub ResetPageProperties()

			' Clear Page/Record Index
			Session("d_news_recordindex") = "0"
			lblCurrentIndex.Text = "0"
		End Sub

عفوا اخى هذة الكنترول btnPagerFirst والاخرى هي للصفحات داخل DataGrid يمكنك الاستغناء عنها ..........

تم تعديل هذه المشاركة بواسطة bnitt في 19 يوليو 2007 في 12:51

#3

ياريت أحد يتكرم بهذا المثال ولكن مع asp:gridview لو أمكن ولكم وافر الشكر ،،

دروس فيديو مجانية ASP.NET باللغة العربية

http://www.amrammar.net/videos.aspx?id=1

دروس تصميم مشروع كامل لموقع أخبار تفاعلي

http://www.amrammar.net/default.aspx?id=5

#4

إن شاء الله سوف اعد مثال News Script كامل وهو الان قيد الانشاء وسيكون فية اشياء كثيرة إن شاء الله

مؤقتا بامكانك اخي habeab تعريف بعض المتغيرات

لاتة انا الان اعطيتك جزء من السكربت الى انا الان شغال علية لاكمالة عما قريب

#5

رائع هذا الكود ، فقد قمت بإضافة بعض التعديلات البسيطة عليها ، وهو الآن شغال معي 100%

مشكور أخي bnitt وإلى الأمام ....

اللهم صلي على محمد وعلى آله وصحابته أجميعن إلى يوم الدين

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…