PDA

View Full Version : سوال: ارتباط دیتا گراید با دیتاست



sepidehdam
دوشنبه 14 اردیبهشت 1388, 23:29 عصر
با سلام
اطلاعات از بانک اطلاعاتی اکسس خوانده شده و در یک فرم با استفاده از دیتاگراید نمایش داده میشود. اطلاعات هر سطر از دیتا گراید توسط textbox در همان فرم نمایش داده میشود (با استفاده از binding) . حال چند تا سوال:
1- با مرتب کردت دیتا گراید اطلاعات textbox دیگر با سطر دیتاگراید ست نمیشوند. ظاهرا با دیتاست بایند شده اند . چگونه این مشکل حل شود؟
2- اگر بخواهیم فیلدهای یک سطر از دیتا گراید را در فرم دیگری برای ویرایش داشته باشیم یا در فرم سومی بخوتهیم یک رکورد جدید از کاربر بگیرذیم و به دیتاگراید اضافه کنیم این کار چگونه ممکن است.

S_h_m102
چهارشنبه 16 اردیبهشت 1388, 09:15 صبح
1-بهتر است اطلاعات را در دیتا ست قرار داده ود همه کار ها را با آن انجام دهید به عنوام مثال به جای اینکه Textbox ها را به دیتاگرد وصل کنید باید اینجوری عمل شود

testbox1.text=ds.table("test").rows(datagridview1.selectedindex).item ("name")
به این ترتیب شما هر عملی که در دیتاگرید انجام دهید به TextBox هم انتقال داده می شود می توانید کد این مطلب که textbox ها خودشون پر شوند را در رویداد های تغییر سطر دیتاگرید قرار دهید.
2- یا می توانید از delegate استفاده کنید و یا بعد از دستور فرم سوم برای نمایش اطلاعات دیتاگرید را دوباره فراخوانی کنید

sepidehdam
چهارشنبه 16 اردیبهشت 1388, 23:37 عصر
اولا من در vb.net 2008 برنامه می نویسم
دوما سوال من این است که برای بایند کرد textbox باید با دیتاست بایند شود یا با دیتا گراید
و سوما سوال دوم را اگر ممکن است با یک مثال کد نویسی توضیح دهید

ali_md110
جمعه 18 اردیبهشت 1388, 21:00 عصر
اگر بخواهیم فیلدهای یک سطر از دیتا گراید را در فرم دیگری برای ویرایش داشته باشیم
یک مثال ساده براتون فرستادم فقط باید کد ویرایش در فرم دوم رو خودتون بنویسید چون خیلی وقت کافی ندارم

sepidehdam
جمعه 01 خرداد 1388, 08:04 صبح
این مثال که می گویید کجاست

sepidehdam
جمعه 01 خرداد 1388, 08:29 صبح
من باز هم به جواب نرسیدم
ببینید من این کارها را انجام دادم: با کد نویسی بر روی فرم 1 جدول بانک اطلاعاتی را در یک دیتا گراید نمایش داده ام. حال میخواهم برای ویرایش رکورد جاری که درد دیتا گراید می بینم از فرم 2 استفاده کنم و کلیه فیلدها را در فرم 2 داشته باشم. اولا چگونه فیدلها را در فرم 2 ( درون textbox ها) پر کنم و ثانیا اگر در فرم 1 دیتا گراید را مرتب کردم در فرم 2 همان رکورد را داشته باشم

ali_md110
جمعه 01 خرداد 1388, 19:36 عصر
نمیدونم چرا مثالی که براتون فرستادم اپ نشده بود

ابتدا یک ماژول اضافه کن کدهای زیر رو به اون اضافه کن

Imports System.Data.OleDb
Module Module1
Public CNN As OleDbConnection
Public DAP As OleDbDataAdapter
Public mytbl As DataTable
Public DS As DataSet
Public Drow As DataRow
Public id_person As Integer
Public cnnstr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\db1.mdb"
Public Sub Fill_Controls(ByVal i As Integer)
' Try ' این پروسیجر جهت بر کردن فيلدها در زمان دابل کلیک بر روی دیتاگراید یا لیست باکس یا هر کنترل دیگر از داده برای نمایش در دیگر کنترلهااست
DAP = New OleDbDataAdapter("select * from person", cnnstr)
DS = New DataSet
DAP.Fill(DS, "person")
mytbl = New DataTable
mytbl = DS.Tables("person")
Drow = mytbl.Rows(i)
End Sub

End Module

کد زیر مربوط به فرم اول شماست

Imports System.Data.OleDb
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
CNN = New OleDbConnection(cnnstr)
DAP = New OleDbDataAdapter("select * from person", cnnstr)
DS = New DataSet
DAP.Fill(DS, "person")
DataGridView1.DataSource = DS.Tables(0)
DAP.Dispose()


End Sub

Private Sub DataGridView1_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellDoubleClick
id_person = Me.DataGridView1.CurrentRow.Index
Form2.ShowDialog()
End Sub

End Class
کد بعدی فرم شماره 2 یعنی همون فرم تکست باکسهایی که گفنید هست

Imports System.Data.OleDb
Public Class Form2

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Fill_Controls(id_person)
Txtid_person.Text = (Drow(0))
Txt_name.Text = (Drow(1))
Txt_famil.Text = (Drow(2))
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.Close()
End Sub
End Class
یه بانک اکسس بساز با یه جدول بنام person و با فیلدهای id_person,name_person,familو بریز توی پوشه bin برنامت
روشهای دیگه هم هست از طریق پروپرتیها هم میشه داده به فرم دیگه ارسال کرد

sepidehdam
شنبه 02 خرداد 1388, 23:27 عصر
با تشکر از شما دوست عزیز
روش شما این بود که رکورد جاری را جستجو کرده و در فرم دوم مقادیر آن را در textbox ها نمایش دهیم.
ایا راه ساده تری وجود ندارد
ببینید من یک دیتا گراید روی فرم 1 قرار میدهم و آنرا با یک جدول از دیتا ست پر میکنم. بعد چند textbox روی همین فرم قرار می دهم و آنها را به دیتا ست بایند میکنم. حال اگر بر روی دیتاگراید حرکت کنم محتوای textbox ها هم متناظر با رکورد جاری تغییر می کنند. تا اینجای کار مشکلی وجود ندارد. حال من در همین فرم یک دکمه می گذارم که میخواهم کاربر با کلیک بر روی آن محتوای رکورد جاری را در فرم دوم برای ویرایش ببیند. آیا نمیشود در فرم دوم هم مانند فرم جاری textbox ها را به دیتا ست بایند کرد . (بجای روش شما که رکورد جاری را جستجو و نمایش می دهد. )

ali_md110
یک شنبه 03 خرداد 1388, 14:13 عصر
چرا بایدتکست باکسها بایند بشه؟

sepidehdam
دوشنبه 11 خرداد 1388, 21:49 عصر
در روش شما اگر دیتاگرید را بر اساس یک ستون مرتب کنیم دیگر رکورد جاری با رکورد نمایش داده شده در فرم دوم همخوانی ندارد چرا؟