PDA

View Full Version : عملیات درج در datagridview



ch2007
یک شنبه 20 اسفند 1385, 10:26 صبح
ُچطوری عملیات insert و update را در Datagridview انجام دهم ؟

__H2__
یک شنبه 20 اسفند 1385, 11:34 صبح
سلام
عزیز جان، برای هر تغییری در اطلاعات شما باید منبع را دستکاری کنید که معمولاَ یک DataSet است.
سطر ها را به جداول DataSet اضافه کنید، DataGridView خودش میفهمد!
و در آخر اگر نیاز داشتید DataSet را به کمک DataAdapter و با دستور Update ذخیره کنید.

ch2007
یک شنبه 20 اسفند 1385, 19:35 عصر
ببینید من نمیخوام اطلاعات به صورت خودکار توسط دیتاست پر بشه بلکه میخوام datagridview هنگام لود صفحه خالی باشه و کاربر بتونه فقط عمل درج را انجام بده و نه اطلاعات را بخونه نه آپدیت و نه حذف کنه .
اسم ستون اول نسبت هست که نسبت خانوادگی اشخاص یک خانواده هست که میتونه مثلا پدر ، مادر ، برادر و یا خواهر باشه و بقیه ستون ها هم خصوصیات آنها و شاید افراد یک فرد 5 نفر باشن من میخوام طرف بتونه یکی یکی افراد خانواده رو به سیستم معرفی کنه .
راستی این رو هم بگم که جدول من ( البته در دیتابیس ) یک ستون هم داره که شماره پرسنلی هست و این در دیتاگرید ایجاد نمیشه و از طریق یک تکست باکس که بالای دیتاگرید قرار داره پر میشه و این شماره هم باید همراه اطلاعات این جدول ذخیره بشه
امیدارم خوب توضیح داده باشم

ghafoori
یک شنبه 20 اسفند 1385, 22:05 عصر
دوست عزیز برای ایجاد یک سطر جدید باید از این دستور استفاده کنید
datagridview1.rows.add
این متد چند حالت مختلف را حترین راه حل بنظر من اطلاعات خودتان را بصورت یک ارایه از نوع object در اورید و داخل این متد قرار دهید مثلا


Dim o(8), o1(3) As Object
o(0) = a
o(1) = Module1.H(a)
o(2) = Module1.V(a)
o(3) = Math.Abs(Module1.SL(a))
o(4) = Module1.T0(a)
o(5) = Module1.US(a)
o(6) = b
o(7) = Module1.time
o(8) = Module1.Z(a, b)
o1(0) = Module1.Y(b, a)
o1(1) = Module1.X(b, a)
o1(2) = b
o1(3) = a
DataGridView1.Rows.Add(o)
DataGridView2.Rows.Add(o1)

ch2007
دوشنبه 21 اسفند 1385, 11:26 صبح
فکر کنم منظورم رو متوجه نشده باشید
عکسی که آپلود کردم رو ببینید . من میخوام یک دیتا گرید در فرم قرار بدم مثل این عکس فقط عنوان ها باشه و بقیشو کاربر در خود دیتاگرید وارد کنه و با رفتن به سطر بعدی اون سطر در دیتابیس ذخیره بشه آیا این امکان وجود داره ؟

saeed_rezaei
دوشنبه 21 اسفند 1385, 12:35 عصر
من هم مثل دوستان معتقدم که باید از dataset استفاده کنی. برای اینکه کاربر نتونه سایر رکوردهایی رو که قبلا وارد شده ببینه کافیه که در قسمتی که رشته اس کیو ال رو بهش می دی یه شرط هم بزاری که هیچ رکوردی برگشت نده. مثل کد زیر.


Dim myconnectionstring AsString = " YOUR CONNECTION STRING"
DIM MyConnection as New SqlConnection (myconnectionstring )
Dim Mydataadapter AsNew SqlDataAdapter("select * from mytable where ( Filde1=null)", MyConnection )
Dim mydataset AsNew DataSet


حالا یه جایی از فرم، مثلا تو بالا اومدنش یا توی رویداد کلیک یه دکمه یا هر جای دیگه دیتا گراید رو bind می کنیم



MyConnection .Open()
Mydataadapter.Fill (mydataset , "mytabel")
MyConnection .Close()
mydatagrid.SetDataBinding(mydataset , "mytabel")


بعد از اجرای کد بالا دیتاگرید خالیه و فقط عناوین رو لیست می کنه. منتظر وارد کردن اطلاعات توسط کاربر می مونیم. سپس باید کد نوشت تا کاربر پس از وارد کردن اطلاعات جدیدش، اطلاعات رو در بانک اطلاعاتی ذخیره کنه.
یه کدی مثل این


Dim cmd AsNew SqlCommandBuilder(Mydataadapter)

MyConnection .Open()
Mydataadapter.update (mydataset , "mytabel")
MyConnection .Close()
mydatagrid.SetDataBinding(mydataset , "mytabel")

البته شما باید چند نکته رو مورد توجه قرار بدید.
1- فیلد کد پرسنلی که توی جعبه متن وارد می کنید.
2- پاکسازی دیتاگرید بعد از هر بار اضافه کردن اطلاعات به بانک اطلاعاتی.