PDA

View Full Version : سوال: قرار دادن متن textbox در datagrid .فوری



blackheart
سه شنبه 15 مرداد 1387, 19:10 عصر
من ۴ تا textbox دارم می خوام وقتی روی دکمه کلیک می کنم text داخل textbox بره داخل datagrid بعد دوباره بتونم داخل textbox چیزی بنویسم و دوباره که کلیک میکنم یه سطر دیگه به datagrid اضافه کنه. آخرش هم یه دکمه دیگه هست که وقتی روش کلیک می کنم کل datagrid رو میریزه داخل database.

zarrin_306
سه شنبه 15 مرداد 1387, 21:04 عصر
نمی شه اول تو دیتا بیست ذخیرش کنی بعد دیتاگرید رو آپ دیت کنی؟
یا می خواهی ابتدا اشتباهات در دیتا گرید نمایش داده بشه بعد از اصلاح وارد دیتا بیس بشه ؟!

reza6384
سه شنبه 15 مرداد 1387, 22:59 عصر
دقیقا من هم با نظر دوستم موافقم. اول دیتاگریدت رو به یک DataSource بهتره Bind کنی، بعد می تونی رکوردها رو دونه دونه به Dataset اضافه کنی و دیتاگرید رو Refresh کنی، و در انتها DataSet رو مستقیما بریزی تو دیتابیس( با استفاده از DataAdapter )

kablayi
چهارشنبه 16 مرداد 1387, 11:54 صبح
سلام ...
دوستان کار نشد نداره ... این کار عملیه ... :گیج:
صورت زیر عمل کن ...


مرحله اول :
روی دیتاگرید راست کلیک کن و Edit column رو انتخاب کن و به نسبت داده هات به اون ستون اضافه کن ... نامی رو برای اون ستون ها در نظر بگیر ...


مرحله دوم :
کد زیر رو در یه دکمه که قصد داری اطلاعات تکست باکسها با زدن اون به درون دیتاگرید بره، بنویس


Dim STRrow As String() = {txtname.Text.Trim, txttedad.Text.Trim, txtgheymat.Text.Trim}
Datagrid1.Rows.Add(STRrow)
txtname.Text = ""
txttedad.Text = ""
txtgheymat.Text = ""
txtname.Select()

خوب تا اینجا هر چند تا سطر که میخوای میتونی توی دیتاگرید بریزی...


مرحله سوم :
برای ذخیره کل دیتا گرید در دیتابیس از کد زیر استفاده کن ...


Dim constr As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Application.StartupPath & "\accountantDB.accdb"
strsql = "insert into LOT (FaktorID,LOTName,NULOT,TOTLOT) values(@FaktorID,@LOTName,@NULOT,@TOTLOT)"
Dim cn As New OleDbConnection(constr)
dim cmd as New OleDbCommand
For i = 0 To Datagrid1.Rows.Count - 1
cmd = New OleDbCommand(strsql, cn)
With cmd
.Parameters.AddWithValue("@FaktorID", txtfaktorID.Text.Trim)
.Parameters.AddWithValue("@LOTName", Datagrid1.Rows(i).Cells("کالا").Value)
.Parameters.AddWithValue("@NULOT", Datagrid1.Rows(i).Cells("تعداد").Value)
.Parameters.AddWithValue("@TOTLOT", Datagrid1.Rows(i).Cells("قیمت").Value)
End With
cn.Open()
cmd.ExecuteNonQuery()
cn.Close()
Next


اگر بازم کاری داشتید بگو ...
موفق باشید ...

blackheart
چهارشنبه 16 مرداد 1387, 18:47 عصر
ممنون از کدی که نوشتی اما این خط مشکل داره
Datagrid1.Rows.Add(STRrow)
وقتی اسم دیتا گریدمو میزنم گزینه ای به اسم rows نداره.
البته vs2003 استفاده میکنم.

kablayi
چهارشنبه 16 مرداد 1387, 23:54 عصر
سلام ...
نمیدونم توی 2003 چجوریه من با 2008 کار میکنم ... گمون نمیکنم فرقی داشته باشه ...

ALI TT
پنج شنبه 17 مرداد 1387, 02:07 صبح
ممنون از کدی که نوشتی اما این خط مشکل داره
Datagrid1.Rows.Add(STRrow)
وقتی اسم دیتا گریدمو میزنم گزینه ای به اسم rows نداره.
البته vs2003 استفاده میکنم.

شما مطمئن هستید که از دیتا گرید ویو استفاده می کنید

bob_moj
پنج شنبه 17 مرداد 1387, 17:55 عصر
فکر کنم این نمونه کد (پروژه)به دردت بخوره !

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

reza6384
جمعه 18 مرداد 1387, 01:04 صبح
نمیدونم توی 2003 چجوریه من با 2008 کار میکنم ... گمون نمیکنم فرقی داشته باشه ...


چرا ، امکانات DataGrid در 2003 Net. خیلی کمتر از DataGridView در 2005 و 2008 هست. بالاخره یه زحمتایی کشیدن این گروه Microsoft طفلی ها:لبخند:

من الان 2003 دم دست ندارم، اما فکر کنم می تونی رکوردت رو به جدولت در دیتاست اضافه کنی و بعد مجددا دیتاگریدت رو Bind کنی.

blackheart
جمعه 18 مرداد 1387, 09:23 صبح
متاسفانه خودم می دونم امکانات ۲۰۰۳ نسبت به 2008 خیلی کمتره ولی من به دلایلی باید از ۲۰۰۳ استفاده کنم.
من هم مشکلم تقریبا برطرف شد.ممنون از راهنماییتون.