نمایش نتایج 1 تا 22 از 22

نام تاپیک: چگونگی جستجو درون یک دیتاگرید

  1. #1
    کاربر دائمی آواتار swallow.pa
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    توی خونه
    پست
    897

    چگونگی جستجو درون یک دیتاگرید

    با سلام خدمت همه
    این سوالی رو که می پرسم ماهیتا با این تایپیک https://barnamenevis.org/showthread.p...B1%DB%8C%D8%AF
    فرق می کنه
    توی گرید من حدود هزار تا رکورد هست می خوام کاربر جستجوهاش رو توی گرید انجام بده و نتایج رو همون لحظه سلکت کنه بدون اینکه رکوردها فیلتر بشن
    راهش چیه
    ممنون از لطفاتون

  2. #2
    کاربر دائمی آواتار فرید نجفلو
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    تبریز
    پست
    1,189

    نقل قول: چگونگی جستجو درون یک دیتاگرید

    یعنی اگه نوشتی فرید و تو ستون اسم کوچک هر کدوم فرید بود به حالت انتخاب دربیان؟
    مثلا اگه سطرهای 1و4و201 اسم فرید بود این سه ستون به حالت انتخاب در بیان و بقیه نه؟
    نوع فیلتر رو هم بگید ، حالت دقیق(فقط اسم هایی که فرید هستن) یا حالت مشابه (اسم هایی که حاوی فرید هستن مثل:فرید،فریدون،فریده و ....)!

    این موارد داخل یک حلقه می تونن عملی بشن

  3. #3
    کاربر تازه وارد آواتار moslem68
    تاریخ عضویت
    مهر 1389
    محل زندگی
    windows Server2008
    پست
    37

    نقل قول: چگونگی جستجو درون یک دیتاگرید

    "Select * From Table1 Where Id Like  'N %" + TextBox1.Text + "N %' And Name Like  'N %" + TextBox2.Text + "  N%' And Family Like  'N %" + TextBox3.Text +  "N %'"
    						

  4. #4
    کاربر دائمی آواتار فرید نجفلو
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    تبریز
    پست
    1,189

    نقل قول: چگونگی جستجو درون یک دیتاگرید

    نقل قول نوشته شده توسط moslem68 مشاهده تاپیک
    "Select * From Table1 Where Id Like  'N %" + TextBox1.Text + "N %' And Name Like  'N %" + TextBox2.Text + "  N%' And Family Like  'N %" + TextBox3.Text +  "N %'"
    بدون اینکه رکوردها فیلتر بشن
    ------------------------------------------

  5. #5
    کاربر دائمی آواتار swallow.pa
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    توی خونه
    پست
    897

    نقل قول: چگونگی جستجو درون یک دیتاگرید

    ببینید دوستان اطلاعات توی گرید با یک سلکت پر می شه
    SELECT * FROM Table1
    خب حالا به دیتاست و .....
    وقتی دیتاگرید پرشد و رکوردها توش هست حالا می خوایم از توی این رکوردها جستجو انجام بدیم
    شما چیکار می کنید؟
    ممنون

  6. #6
    کاربر دائمی آواتار saeidpsl
    تاریخ عضویت
    آذر 1388
    محل زندگی
    مریخ
    سن
    33
    پست
    791

    نقل قول: چگونگی جستجو درون یک دیتاگرید

    بفرما

    Dim i, a AsInteger
    For i = 1 To DataGridView1.Rows.Count - 1
    For a = 1 To DataGridView1.Columns.Count - 2
    If TextBox1.Text = DataGridView1.Rows(i).Cells(a).Value Then
    DataGridView1.Rows(i).Cells(a).Selected = True
    EndIf
    Next
    Next

  7. #7
    کاربر دائمی آواتار morrning
    تاریخ عضویت
    تیر 1387
    محل زندگی
    کرمانشاه
    پست
    600

    نقل قول: چگونگی جستجو درون یک دیتاگرید

    "Select * From Table1 Where Id Like 'N %" + TextBox1.Text + "N %' And Name Like 'N %" + TextBox2.Text + " N%' And Family Like 'N %" + TextBox3.Text + "N %'" 


    فکر کنم این کد مشکل امنیتی داره کافیه یوزر یه علامت ' وارد کنه و بعد دستور SQL مورد نظرش رو وارد کنه .مطمئن نیستم ولی احتمالا sql injection به وجود بیاد چون ورودی فیلتر نشده!

  8. #8
    کاربر دائمی آواتار swallow.pa
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    توی خونه
    پست
    897

    نقل قول: چگونگی جستجو درون یک دیتاگرید

    نقل قول نوشته شده توسط saeidpsl مشاهده تاپیک
    بفرما

    Dim i, a AsInteger
    For i = 1 To DataGridView1.Rows.Count - 1
    For a = 1 To DataGridView1.Columns.Count - 2
    If TextBox1.Text = DataGridView1.Rows(i).Cells(a).Value Then
    DataGridView1.Rows(i).Cells(a).Selected = True
    EndIf
    Next
    Next
    دوست من از لطف شما ممنونم
    حالا توی توابع sql دیدی که عملگر Like داریم اینجا چطوری عمل کنیم
    ممنونم

  9. #9
    کاربر دائمی آواتار saeidpsl
    تاریخ عضویت
    آذر 1388
    محل زندگی
    مریخ
    سن
    33
    پست
    791

    نقل قول: چگونگی جستجو درون یک دیتاگرید

    خواهش
    جستجوی like به شکل حرف حرف یا دونه دونه یا len len چک میکنه پس باید پس اینجوری میشه

    مثل این


    Dim p, o AsInteger
    Dim db AsString
    db = DataGridView1.Rows(i).Cells(a).Value
    For p = 1 To Len(db)
    For o = 1 To Len(TextBox1.Text)
    If Mid(TextBox1.Text, o, o) = Mid(DataGridView1.Rows(i).Cells(a).Value.ToString, p, p) Then
    DataGridView1.Rows(i).Cells(a).Selected = True
    EndIf
    Next
    Next

  10. #10
    کاربر دائمی آواتار swallow.pa
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    توی خونه
    پست
    897

    نقل قول: چگونگی جستجو درون یک دیتاگرید


    Sub Find_In_Grid()
    Dim db As String
    Dim I As Integer
    db = DataGridViewX1.Rows(I).Cells(5).Value
    For p = 1 To Len(db)
    For o = 1 To Len(txtFind.Text)
    If Mid(txtFind.Text, p, p) = Mid(DataGridViewX1.Rows(I).Cells(5).Value.ToString , p, p) Then
    DataGridViewX1.Rows(I).Cells(5).Selected = True
    End If
    Next
    Next
    End Sub

    دوست من این کد رو استفاده کردم کار نکرد
    نمی دونم عیبش چیه

  11. #11
    کاربر دائمی آواتار فرید نجفلو
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    تبریز
    پست
    1,189

    نقل قول: چگونگی جستجو درون یک دیتاگرید

    دوست عزیز شما به جای MID باید از InStr استفاده کنید هم راحته هم حلقه داخلی حذف می شه!
    ون از همه مهمتر اینکه من اصلا متوجه نشدم این تابع شما دنبال چی می گرده
    ولی اینو می دونم که اگه یک حرف از سلول گرید با یک حرف از منت تکست باکس مشابه باشن سلول انتخاب میشه (مثلا abcd و dcba باه برابرند!!!)

    Sub Find_In_Grid(SearchFor As String)
    For Each aRow In DataGridViewX1.Rows
    If InStr(aRow.Cells(5).ToString, SearchFor) <> 0 Then
    aRow.Cells(5).Selected = True
    End If
    Next
    End Sub
    آخرین ویرایش به وسیله فرید نجفلو : چهارشنبه 02 فروردین 1391 در 16:41 عصر

  12. #12
    کاربر دائمی آواتار swallow.pa
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    توی خونه
    پست
    897

    نقل قول: چگونگی جستجو درون یک دیتاگرید

    نقل قول نوشته شده توسط Farid.N مشاهده تاپیک
    دوست عزیز شما به جای MID باید از InStr استفاده کنید هم راحته هم حلقه داخلی حذف می شه!
    ون از همه مهمتر اینکه من اصلا متوجه نشدم این تابع شما دنبال چی می گرده
    ولی اینو می دونم که اگه یک حرف از سلول گرید با یک حرف از منت تکست باکس مشابه باشن سلول انتخاب میشه (مثلا abcd و dcba باه برابرند!!!)

    Sub Find_In_Grid(SearchFor As String)
    For Each aRow In DataGridViewX1.Rows
    If InStr(aRows(I).Cells(5).ToString, SearchFor) <> 0 Then
    Rows(I).Cells(5).Selected = True
    End If
    Next
    End Sub
    این کد اینجا خطا می دهد
    Error 1 'aRows' is not declared. It may be inaccessible due to its protection level.

  13. #13
    کاربر دائمی آواتار فرید نجفلو
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    تبریز
    پست
    1,189

    نقل قول: چگونگی جستجو درون یک دیتاگرید

    برادر من این کد رو بدن تست همینجا نوشتم و یک
    s(I)
    اضافه نوشتم(البته بیشتر واسه اینه که از کد شما رو اصلاح کردم) حالا نمی شد اونو خودت پاک کنی؟!!
    بعضی وقتا یه چیزایی می پرسید و می نوسید که آدم می ره تو کما!
    (اصلاح شد)

  14. #14
    کاربر دائمی آواتار swallow.pa
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    توی خونه
    پست
    897

    نقل قول: چگونگی جستجو درون یک دیتاگرید

    نقل قول نوشته شده توسط Farid.N مشاهده تاپیک
    من این کد رو بدن تست همینجا نوشتم و یک
    s(I)
    اضافه نوشتم(البته بیشتر واسه اینه که از کد شما رو اصلاح کردم) حالا نمی شد اونو خودت پاک کنی؟!!

    )
    با سلام
    آدم چیزی رو که بلد نباشه باید بگه من تو این قسمت هنگ کردم و این کدها هم تست کردم جواب نداد
    آخرین ویرایش به وسیله swallow.pa : چهارشنبه 02 فروردین 1391 در 19:18 عصر دلیل: تکمیل موضوع

  15. #15
    کاربر دائمی آواتار saeidpsl
    تاریخ عضویت
    آذر 1388
    محل زندگی
    مریخ
    سن
    33
    پست
    791

    نقل قول: چگونگی جستجو درون یک دیتاگرید

    درست شد


    Dim p, o AsInteger
    Dim db AsString
    db = DataGridView1.Rows(i).Cells(a).Value
    For p = 1 To Len(db)
    For o = 1 To Len(TextBox1.Text)
    If Mid(TextBox1.Text, o, 1) = Mid(DataGridView1.Rows(i).Cells(a).Value.ToString, p, 1) Then
    DataGridView1.Rows(i).Cells(a).Selected = True
    EndIf
    Next
    Next

    مثل ل رو جستجو میکنی که داخل هر قسمتی ل باشه نشون میده

    این کد یک یک چک میکنه خودت میتونی بزاری دوتا دوتا len

    ::

  16. #16
    کاربر دائمی آواتار swallow.pa
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    توی خونه
    پست
    897

    نقل قول: چگونگی جستجو درون یک دیتاگرید

    این قسمت اشکال داره
    db = DataGridViewX1.Rows(i).Cells(a).Value
    اون چیزی رو که الان سلکت شده بر می گردونه در صورتی که اون رکوردی رو که می خوایم شاید توی ردیف 50 دیتاگرید باشه

  17. #17
    کاربر دائمی آواتار ali_najari
    تاریخ عضویت
    مهر 1386
    محل زندگی
    اصفهان
    سن
    37
    پست
    849

    نقل قول: چگونگی جستجو درون یک دیتاگرید

    دوست عزیز آیا به دیتاگیرید تون Datasource میدید؟ اگر یک Datatable رو به دیتا سورس بدهید خیلی راحت و بدون صرف وقت زیر 1 میلی ثانیه میشه بین 10000 و بیشتر اطلاعات رو فیلتر کرد!

    اگر امکانش هست تعیین کنید که آیا اطلاعات رو از بانک اطلاعاتی وارد دیتاگیرید میکنید؟ و در وحله دوم اگر امکانش هست یک نمونه برنامه بزارید از پرکردن دیتاگیرید تا مشکل رو حل کنم

  18. #18
    کاربر دائمی آواتار ROSTAM2
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    فارس
    پست
    2,010

    نقل قول: چگونگی جستجو درون یک دیتاگرید

    با سلام
    یه پیشنهاد دارم...
    یه تابع درون TableAdapter جدول بساز به این مضمون
    SELECT * FROM Table1 WHERE Name Like '%' + @Name + '%' And Family Like '%' + @Family + '%'

    اگه اسم این تابع بشه FillByNameAndFamily
    از این تابع در برنامه بدین نحو استفاده می کنیم
    MYTableAdapder1.FillByNameAndFamily(MYDataSet1.Tab  le1,NameBox.Text,FamilyBox.Text)

    اگر DataGrid به منبع اطلاعات وصل باشه اتوماتیک آیتمهای فیلتر شده نمایش داده می شه در غیر اینصورت ، برای نمایش تمامی آیتمهای جدول با همین فیلتر
    With MYDataSet1.Table1
    For i=0 to .Count -1
    X=.Item(i).Name
    Next
    End With

    به جای X خانه های DataGrid رو وارد کنید

  19. #19
    کاربر تازه وارد آواتار moslem68
    تاریخ عضویت
    مهر 1389
    محل زندگی
    windows Server2008
    پست
    37

    نقل قول: چگونگی جستجو درون یک دیتاگرید

    نقل قول نوشته شده توسط morrning مشاهده تاپیک
    "Select * From Table1 Where Id Like 'N %" + TextBox1.Text + "N %' And Name Like 'N %" + TextBox2.Text + " N%' And Family Like 'N %" + TextBox3.Text + "N %'" 


    فکر کنم این کد مشکل امنیتی داره کافیه یوزر یه علامت ' وارد کنه و بعد دستور SQL مورد نظرش رو وارد کنه .مطمئن نیستم ولی احتمالا sql injection به وجود بیاد چون ورودی فیلتر نشده!
    TextBox1.Text.Replace("'", "''")

    با این کد مشکل امنیتش حل نمیشه ?

  20. #20
    کاربر دائمی آواتار فرید نجفلو
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    تبریز
    پست
    1,189

    نقل قول: چگونگی جستجو درون یک دیتاگرید

    دوست عزیز درسته این SQL Injection هست و فوق العاده خطرناک اگه مصمم هستید که از این خطر دور بشید باید از دستورات پارامتریک استفاده کنید
    یه بررسی تو سایت داشته باشید پیدا می کنید
    اون روشی هم که گفتید بدرد نمی خوره!
    آخرین ویرایش به وسیله فرید نجفلو : سه شنبه 12 اردیبهشت 1391 در 23:57 عصر

  21. #21

    Red face نقل قول: چگونگی جستجو درون یک دیتاگرید

    سلام دوست عزیز پروژت آماده شد .
    مطمئنا باگ داره به علت کم بود وقت می سپارمش به دوستان عزیز (Farid-VbBoss , ...)

    akfa_datagridfind.rar


    [IMG]86570[/IMG]
    عکس های ضمیمه عکس های ضمیمه

  22. #22
    کاربر دائمی آواتار فرید نجفلو
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    تبریز
    پست
    1,189

    نقل قول: چگونگی جستجو درون یک دیتاگرید

    نقل قول نوشته شده توسط kazemfallahi1371 مشاهده تاپیک
    سلام دوست عزیز پروژت آماده شد .
    مطمئنا باگ داره به علت کم بود وقت می سپارمش به دوستان عزیز (Farid-VbBoss , ...)
    سلام
    بله خواهش می کنم!
    اگه جسارت نباشه :
    شما در کدتون از For Each استفاده کردید و داخل همون اومدیدی از یه شمارنده (intcount و intcountCell) استفاده کردید
    کد نویسی اضافی و تورفتگی غیر لازم دیده می شه
    کد شما اگه دقت کرده باشید سلول های خلی رو هم انتخاب می کنه

    بنده هم این کد رو پیشنهاد می کنم (چون نخواستم یه پروژه جدید بفرستم جهت تست کد ها رو تو همون پروژه دوستمون با کد های موجود تعویض کنید):

        Private Sub FindInGridColumn(SearchFor As String, ColumnName As Integer, Optional WholeWord As Boolean = True)
    For Each aRow As DataGridViewRow In Me.DataGridView1.Rows
    If WholeWord Then
    If CStr(aRow.Cells(ColumnName).Value) = SearchFor Then
    aRow.Cells(ColumnName).Selected = True
    End If
    Else
    If InStr(CStr(aRow.Cells(ColumnName).Value), SearchFor, CompareMethod.Text) <> 0 Then
    aRow.Cells(ColumnName).Selected = True
    End If
    End If
    Next
    End Sub
    Private Sub FindAllInGrid(SearchFor As String, Optional WholeWord As Boolean = True)
    For Each Clmn As DataGridViewColumn In Me.DataGridView1.Columns
    FindInGridColumn(SearchFor, Clmn.Index, WholeWord)
    Next
    End Sub
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    DataGridView1.SelectionMode = DataGridViewSelectionMode.CellSelect
    DataGridView1.ClearSelection()
    FindAllInGrid(TextBox1.Text, RadioButton1.Checked)
    End Sub
    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    Try
    DataGridView1.SelectionMode = DataGridViewSelectionMode.CellSelect
    DataGridView1.ClearSelection()
    Dim clmn = Me.DataGridView1.Columns(TextBox2.Text)
    FindInGridColumn(TextBox3.Text, clmn.Index, RadioButton1.Checked)
    Catch ex As Exception
    End Try
    End Sub

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •