PDA

View Full Version : سوال: جستجو و جابه جایی سطر ها در datagrideview



sari-1369
سه شنبه 29 اردیبهشت 1388, 16:00 عصر
سلام دوستان ، من با تابع زیر توی datagrideview هام search انجام میدم . و اون سطر هایی که شامل جستجو میشن رو select می کنم . حالا می خوام سطر هایی که سطر هایی که انتخاب شدن بیان تو سطر های اول datagrideview .

مثلا اگه 3 تا سطر انتخاب شدن به ترتیب توی سطر های 1 و 2 و 3 قرار بگیرن .



Public Sub DgvSearch(ByVal DGV As Telerik.WinControls.UI.RadGridView, ByVal TXT As DevComponents.DotNetBar.Controls.TextBoxX)
Dim a, b As String
DGV.MultiSelect = True
DGV.SelectionMode = DataGridViewSelectionMode.FullRowSelect

If TXT.Text <> "" Then
For i = 0 To DGV.RowCount - 1
a = DGV.Rows(i).Cells(2).Value
b = Mid(a, 1, TXT.TextLength)
If b = TXT.Text Then

DGV.Rows(i).IsSelected = True

End If
Next
End If
End Sub

ممنون میشم کمکم کنید .

anooshiran
سه شنبه 29 اردیبهشت 1388, 20:29 عصر
با سلام دوست عزيز

با كد زير ميتواني به نتيجه برسي




Private Sub dgvSearch()
Dim s_row(dgv.SelectedRows.Count - 1)
Dim i As Int16 = 0
Dim selectedRow As DataGridViewRow
For Each selectedRow In dgv.Rows
If selectedRow.Selected Then
s_row(i) = selectedRow.Index
i += 1
End If
Next
i = 0
For Each rowIndex As Int16 In s_row
selectedRow = dgv.Rows(rowIndex)
dgv.Rows.Remove(selectedRow)
dgv.Rows.Insert(i, selectedRow)
i += 1
Next
End Sub



باز هم اگر سئوالي بود در خدمت هستم

sari-1369
سه شنبه 29 اردیبهشت 1388, 21:37 عصر
میشه بگین این کد رو کجای تایع اضافه کنم ؟ من به انتهای کد های خودم اضافه کردم و این خطا ( عکسشو ضمیمه کردم ) میده .

یه سوال دیگه ، ساختار For Each چطوریه ؟

anooshiran
سه شنبه 29 اردیبهشت 1388, 21:49 عصر
سلام دوست عزيز

اين كدي كه برايت نوشتم زماني كارآيي دارد كه datagridview به table متصل نباشد. وقتي datagridview به يك table متصل است بايد از متد متفاوتي استفاده كرد.

اين متد را هم برايت خواهم نوشت

sari-1369
سه شنبه 29 اردیبهشت 1388, 22:06 عصر
ممنون میشم.

anooshiran
چهارشنبه 30 اردیبهشت 1388, 02:37 صبح
سلام دوست عزيز

كد زير جهت datagridview هايي است كه به table متصل هستند




Private Sub dgvSearch()
Dim s_row(dgv.DataSource.rows.Count - 1) As DataRow
Dim i As Int16 = 0
Dim dgvRow As DataGridViewRow
Try
For Each dgvRow In dgv.Rows
If dgvRow.Selected Then
s_row(i) = dgv.DataSource.rows(dgvRow.Index)
i += 1
End If
Next
For Each dgvRow In dgv.Rows
If Not dgvRow.Selected Then
s_row(i) = dgv.DataSource.rows(dgvRow.Index)
i += 1
End If
Next
Catch ex As Exception
End Try
Dim dt As New DataTable
dt = dgv.DataSource.copy
dt.Clear()
i = 0
For Each rows As DataRow In s_row
dt.LoadDataRow(rows.ItemArray, False)
Next
dgv.DataSource.Clear()
dgv.DataSource = dt.Copy
dt = Nothing

End Sub




باز هم اگر سئوالي بود در خدمت هستم

sari-1369
چهارشنبه 30 اردیبهشت 1388, 14:58 عصر
خیلی ممنون ، مشکلم حل شد .

فقط یه مشکل کوچیک ، سطر ها deselct میشن و مشخص نیست چه سطر هایی جزء جستجو بودن .

anooshiran
چهارشنبه 30 اردیبهشت 1388, 15:28 عصر
سطرهايي را كه select مي كني رنگشونو عوض كن



dgv.DefaultCellStyle.SelectionBackColor = Color.LightGray
dgv.DefaultCellStyle.SelectionForeColor = Color.Black

sari-1369
پنج شنبه 31 اردیبهشت 1388, 17:28 عصر
سلام ،

باز هم مزاحم شدم :لبخند:

من یه مشکله دیگه هم دارم ، توی DGV چند تا cuolemn دیگه هم دارم که از یکی از نوع چک باکس و یکی از نوع تکس باکس و یکی از نوع کامبو باکس هستش ، که مقادیرشو خود کاربر وارد میکنه ، وقتی که سطری جا به جا میشه اون کالمن ها مقدار فعلیشونو از دست میدن . :ناراحت:

اگه میشه مثل همیشه لطف کنید و کمکم کنید .

پیشاپیش ممنون .