PDA

View Full Version : حذف کردن یک رکورد از DataGrid



baran_mehr
سه شنبه 19 شهریور 1387, 16:13 عصر
سلام به همه دوستان عزیز:قلب:
دوستان برای حذف کردن یک رکورد از DataGrid باید چکار کرد؟فرض کنید یک Grid دارای 10 رکورد هست و ما میخوایم رکورد 5 رو حذف کنیم.
اگر کسی میدونه همین کار رو چطور باید رو ی Data Table انجام بده. ممنون میشم بگه
شاد باشید.:خجالت:

jas1387
سه شنبه 19 شهریور 1387, 16:55 عصر
راه های مختلفی دارد

1. شما می توان یه textbox بگذارید و از کاربر بخواهید id یا شماره آن رکورد را وارد کند وشما با دستور delete آن رکورد راحذف میکنید

2. می توانید شماره رکورد جاری datagrid را بگیرد ( رکوردی که کاربر آن را انتخاب کرد) و بعد از دستور delete استفاده کنید

baran_mehr
سه شنبه 19 شهریور 1387, 17:27 عصر
سلام دوستان عزیز مشکل حذف ردیف از Grid حل شد. کدشو پیدا کردم
اگر میشه بگید چطوری باید رکورد رو از Datatable حذف کنم.بدون استفاده از دستورات sql منظورم هست

msh_gold
چهارشنبه 20 شهریور 1387, 05:46 صبح
سلام ميشه كدشو بزاريد تا ما هم استفاده كنيم .آخه منم اين كد رو لازم دارم .با تشكر:لبخندساده:

mehrnoosh_al62
چهارشنبه 20 شهریور 1387, 10:49 صبح
[datatable_name].Rows(5).Delete()

baran_mehr
چهارشنبه 20 شهریور 1387, 13:33 عصر
سلام msh_gold جان.
اینم کد حذف از دیتاگرید:

GridView1.Rows.RemoveAt(شماره ایندکس رکورد مورد نظر)
خوش باشی عسلم.

baran_mehr
چهارشنبه 20 شهریور 1387, 13:49 عصر
مرسی mehrnoosh_al62 جان.
mehrnoosh_al62 جان اگر لیستی از ایندکس ها رو داشته باشیم که بخوایم از DataTable حذف کنیم ، آیا راه بهتر ی نیست که بشه باهاش این کار رو انجام داد.
یعنی راهی که مثلا 10 تا ایندکس رو به صورت یه لیست یا یه ارایه بهش بدیم و اون همشون رو حذف کنه؟

mehrnoosh_al62
چهارشنبه 20 شهریور 1387, 14:45 عصر
میتونی از یه حلقه for استفاده کنی...


For k As Integer = 0 To [تعدادایندکس ها برای حذف]
tbl2.Rows(arr(k)).Delete()
Next

john smithair
چهارشنبه 03 مهر 1387, 22:09 عصر
با سلام
من دقیقا این کد رو برای حذف ردیف استفاده کرده ام در حالت معمولی کار میکنه.
اما وقتی data grid رو بازیابی(refresh)میکنم یا این که در اون جستجو میکنم. دیگه فقط از خود data grid پاک یکنه و از table اصلی من پاک نمیکنه و در دفعات بعد که وارد برنامه میشم. اون ردیف پاک نشده.


Try
SelectCase MsgBox("are you sure???", MsgBoxStyle.YesNo, "g???")
Case MsgBoxResult.Yes
BankDataGridView.Rows.RemoveAt(BankDataGridView.Se lectedRows.Item(0).Index)
BankTableAdapter.Update(ShohadaDataSet)
Case MsgBoxResult.No
Me.Show()
EndSelect
Catch
MsgBox("delet sucssefull", MsgBoxStyle.OkOnly, "g???")
EndTry

کسی میتونه کمکم کنه خیلی فوری است.؟:خجالت::خجالت:

baran_mehr
چهارشنبه 03 مهر 1387, 23:43 عصر
خوب عزیز دلم مشخصه چون شما عمل حذف سطر رو روی دیتاگرید انجام میدید نه روی جدول و برای همین اطلاعات داخل جدول تغییر نمیکنه.
میتونید هر چی رو که از گرید حذف کردید رو از جدول هم حذف کنید .عمل حذف از جدول هم که در بالا دوستان گفتن.شاد باشی نازم

ali_md110
پنج شنبه 04 مهر 1387, 08:44 صبح
دوست عزیز ابتدا باید دیتاگراید رو به جدول بایند کنید سپس عمل حذف رو انجام بدید
کد زیر تمام اعمال روی یک دیتاگراید ویو به شما نشون میده
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Text
Imports System.Windows.Forms
Imports System.Data.OleDb

Public Class Form1
Private dataTable1 As New DataTable()
Private oleDbConnection1 As New OleDbConnection()
Private oleDbDataAdapter1 As New OleDbDataAdapter()
Private Sub Action()
Me.oleDbConnection1.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = |DataDirectory|\db.mdb; Persist Security Info = True"
Me.oleDbDataAdapter1.SelectCommand = New OleDbCommand("SELECT ID, Field1, Field2 FROM Table1", Me.oleDbConnection1)
Me.oleDbDataAdapter1.Fill(Me.dataTable1)
Me.dataGridView1.DataSource = dataTable1

'Initialize UPDATE Command.


End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.oleDbDataAdapter1.UpdateCommand = New OleDbCommand("UPDATE Table1 SET Field1 = @field1, Field2 = @field2 WHERE ID = @id", Me.oleDbConnection1)
Me.oleDbDataAdapter1.UpdateCommand.Parameters.AddW ithValue("@field1", GetType(String)).SourceColumn = "Field1"
Me.oleDbDataAdapter1.UpdateCommand.Parameters.AddW ithValue("@field2", GetType(String)).SourceColumn = "Field2"
Me.oleDbDataAdapter1.UpdateCommand.Parameters.AddW ithValue("@id", GetType(Integer)).SourceColumn = "ID"

'Initialize INSERT Command.
Me.oleDbDataAdapter1.InsertCommand = New OleDbCommand("INSERT INTO Table1 (Field1, Field2) VALUES (@field1, @field2)", Me.oleDbConnection1)
Me.oleDbDataAdapter1.InsertCommand.Parameters.AddW ithValue("@field1", GetType(String)).SourceColumn = "Field1"
Me.oleDbDataAdapter1.InsertCommand.Parameters.AddW ithValue("@field2", GetType(String)).SourceColumn = "Field2"

'Initialize DELETE Command.
Me.oleDbDataAdapter1.DeleteCommand = New OleDbCommand("DELETE FROM Table1 WHERE ID = @id", Me.oleDbConnection1)
Me.oleDbDataAdapter1.DeleteCommand.Parameters.AddW ithValue("@id", GetType(Integer)).SourceColumn = "ID"

Me.oleDbDataAdapter1.Update(dataTable1)
End Sub

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Action()
End Sub
End Class

john smithair
پنج شنبه 04 مهر 1387, 09:20 صبح
خوب چرا وقتی در حالت معمولی است. یعنی من هیچ refresh یا جستجویی روی datagrid انجام نمیدم درست عمل میکنه و از tableهم پاک میکنه؟
بعد من خیلی وارد نیستم همه ی کد هایی رو که دوستمون ali _md 110 قرار داده است رو باید من هم در برنامه ام قرار بدم.؟
اگه کمکم کنید ممنونم.

ali_md110
پنج شنبه 04 مهر 1387, 13:48 عصر
برادر جان کدهای زیر سه عمل اصلی درج حذف و ویرایش رو انجام میده هر کدومش لازم نداری از برنامه حذف کن در ضمن دیتاگراید زمانیکه بوسیله رکوردهای دیتاست پر شده میتونه عملیات حذف بالا رو انجام بده
کدهایی که جهت حذف نیازتون هست

Imports System.Data.OleDb


Public Class Form1
Private dataTable1 As New DataTable()
Private oleDbConnection1 As New OleDbConnection()
Private oleDbDataAdapter1 As New OleDbDataAdapter()
Private Sub Action()
Me.oleDbConnection1.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = |DataDirectory|\db.mdb; Persist Security Info = True"
Me.oleDbDataAdapter1.SelectCommand = New OleDbCommand("SELECT ID, Field1, Field2 FROM Table1", Me.oleDbConnection1)
Me.oleDbDataAdapter1.Fill(Me.dataTable1)
Me.dataGridView1.DataSource = dataTable1


End Sub


Me.oleDbDataAdapter1.DeleteCommand = New OleDbCommand("DELETE FROM Table1 WHERE ID = @id", Me.oleDbConnection1)
Me.oleDbDataAdapter1.DeleteCommand.Parameters.AddW ithValue("@id", GetType(Integer)).SourceColumn = "ID"

Me.oleDbDataAdapter1.Update(dataTable1)


روال Action رو هم توی فرم لود صدا بزن جهت بایند شدن دیتاگرایدویو

eworkpro
پنج شنبه 04 مهر 1387, 20:29 عصر
سلام.
دوست عزیز من دیتابیس ام sql هستش.
اینکارها رو کردم ولی برا حذف رکورد از دیتابیس این کار نمی کنه !
چیکار کنم ؟

ali_md110
پنج شنبه 04 مهر 1387, 21:22 عصر
قسمت imports برنامه رو به Imports System.Data.SqlClient تغییر بدید ونوع اداپتور- کوماندها- کانکشنها رو به نوع اسکیول تغییر بدید
مثلا از Private oleDbDataAdapter1 As New OleDbDataAdapter() به Dim sqlAdapter1 As SqlDataAdapter تغییر دهید