PDA

View Full Version : سوال: انتقال اطلاعات از چند TextBox به یک DataGridView



ali2121
یک شنبه 13 اسفند 1391, 17:29 عصر
سلام

روی یک فرم چند تا TextBox دارم و میخوام وقتی روی دکمه ای کلیک شد محتوای TextBox ها داخل DataGridView در یک سطر ثبت بشه و اگر دوباره کلیک شد در یک سطر دیگه ؟

بعد چطور میتونم اطلاعات موجود در DataGridView را با کلیک رو دکمه ای داخل بانک ذخیره کنم؟
خواهشن کدش رو برام بنویسید

با تشکر

danialafshari
یک شنبه 13 اسفند 1391, 17:53 عصر
سلام
به شدت در این سایت در این مورد بحث شده و هم PDF موجوده و هم پروژه و سورس
بهتر بود قبلش جستجو می کردید
به هر حال :

ali2121
یک شنبه 13 اسفند 1391, 20:53 عصر
سلام
تشکر به خاطر سورس کد :ولی این پروژه در دو حالت داده ها در بانک ذخیره می شود که این رو من نمیخام
من میخام داده ها اول در دیتا گرید قرار بگیره و اگر دکمه ثبت را کلیک کردم اطلاعات دیتاگرید در بانک ذخیره بشه در غیر این صورت اطلاعات دیتا گرید در بانک ذخیره نشه

ايمان هاشمي
یک شنبه 13 اسفند 1391, 23:28 عصر
من ميتونم مشكلتو حل كنم
ميخواي ؟
اين اي دي منه در ياهو مسنجر بيا تا بهت بگم
iman_hashemi_iran

docendo
یک شنبه 13 اسفند 1391, 23:33 عصر
من ميتونم مشكلتو حل كنم
ميخواي ؟

با درود
این هم از اون دسته جوابها بود
ميخواي ؟ یعنی چه
اگر پاسخ سوالش را دارید بگویید تا اطلاف وقت نشود

ايمان هاشمي
یک شنبه 13 اسفند 1391, 23:35 عصر
اي دي من در ياهو

iman_hashemi_iran

ali2121
دوشنبه 14 اسفند 1391, 12:26 عصر
درود کسی نیست به این سوال جواب بده

برنامه نویسان سی شارپ کجایید؟

rg_BlackRose
دوشنبه 14 اسفند 1391, 15:56 عصر
یک راه استفاده از حلقه برای ورود سطر به سطر DataGridView در دیتا بیس هست.


private void Save_DGV_ToDB()
{
try
{
con = new SqlConnection();
con.ConnectionString = "کانکشن استرینگ"
con.Open();

string connString = "INSERT INTO table1(field1,field2,field3) values(@field1,@field2,@field3)";

for (int row = 0; row < DataGridView1.Rows.Count; row++)
{
SqlCommand cmd1 = new SqlCommand(connString, con);
cmd1.Parameters.AddWithValue("@field1", DataGridView1.Rows[row].Cells[0].FormattedValue.ToString());
cmd1.Parameters.AddWithValue("@field2", DataGridView1.Rows[row].Cells[1].FormattedValue.ToString());
cmd1.Parameters.AddWithValue("@field3", DataGridView1.Rows[row].Cells[2].FormattedValue.ToString());
cmd1.ExecuteNonQuery();
}
}
catch (Exception ex)
{
MessageBox.Show("error in inserting" + ex.Message);
}
}



راه حل دیگه استفاده از CommandBuilder هست


private void SaveData(DataGridView dgv)
{
string connString="کانکشن استرینگ";
using(SQLConnection conn = new SQLConnection(connString))
{
conn.Open();
SQLDataAdapter da = new SQLDataAdapter("SELECT * FROM table1", connString);
SQLCommandBuilder commandBuilder = new SQLCommandBuilder(da);
DataTable dt = dgv.DataSource as DataTable;
da.Update(dt);
dt.AcceptChanges();
}
}


خودم فرصت تست کردن کدها رو نداشتم بنابراین اگه مشکلی پیش اومد پیغام بدین.

موفق باشید

ali2121
دوشنبه 14 اسفند 1391, 16:33 عصر
درود کد اول شما به بانک متصل شده و یکسری داده در تیبل درج کرده و در دیتا گرید نمایش میده


اما من این رو نمیخام


فرض کنیم یک فرم فاکتور خرید، در این فرم فاکتور چند تا تکست باکس داریم که بعد از کلیک بر روی یک تکست باکس یا دکمه اطلاعات تاکست باکسها در دیتا گرید ریخته شود و بعد اگر بر روی دکمه ای کلیک کردیم اطلاعات دیتا گرید در بانک ذخیره بشه اگر بر روی دکمه کلید نکردیم اطلاعات که در دیتا گرید هست در بانک ذخیره نشه کد های با لا اطلاعات را در بانک ذخیره در دیتا گرید نمایش میده که من این رو نمیخام

pedram.11
دوشنبه 14 اسفند 1391, 17:36 عصر
بفرمائید اینو تست کنید

روش کار:
بعد از اینکه دیتابیس رو به دیتاگریدویو متصل کردیم
1-برای لود اطلاعات از دیتابیس از دستور زیر استفاده میکنیم که البته این کد اتوماتیک بعد از متصل کردن دیتابیس به دیتاگریدویو در رویداد لود فرم اضافه میشه
this.table1TableAdapter.Fill(this.database1DataSet .Table1);
2- برای اضافه کردن اطلاعات جدید، یک سطر جدید از نوع جدول خودمون میسازیم و اطلاعات رو بهش اضاف میکنیم، سپس به دیتاتیبل اضافه میکنیم
DataRow NewRow = this.database1DataSet.Table1.NewRow();
NewRow["Field1"] = textBox1.Text;
NewRow["Field2"] = textBox2.Text;
this.database1DataSet.Table1.Rows.Add(NewRow);

3-برای ذخیره اطلاعات هم کافیه آداپتر متصل شده رو به روش زیر آپدیت کنیم:
OleDbCommandBuilder ocb = new OleDbCommandBuilder(this.table1TableAdapter.Adapte r);
this.table1TableAdapter.Adapter.InsertCommand = ocb.GetInsertCommand();
this.table1TableAdapter.Adapter.Update(this.databa se1DataSet.Table1);


پروژه هم آپ کردم امیدوارم کارتو راه بندازه
100860

khokhan
دوشنبه 14 اسفند 1391, 17:47 عصر
با سلام

اینه اون همون؟؟؟؟:لبخند:

ali2121
دوشنبه 14 اسفند 1391, 22:36 عصر
درود به آقای پدرام

اگه بخام سه تا تکست باکس را به همراه دیتا گرید آپدیت کنم چه کدی رو باید در قسمت آپدیت اضافه کم

یک دنیا سپاس

pedram.11
سه شنبه 15 اسفند 1391, 02:04 صبح
درود
به هر تعداد که ستون دارید میتونید خط زیر رو اضاف کنید:
NewRow["Column"] = textBox3.Text;
Column همون اسم ستون هست

ali2121
سه شنبه 15 اسفند 1391, 10:27 صبح
درود راستش فرم فاکتور خرید میباشد اطلاعات دیتاگرید به درستی آپدیت میشه ، اما وقتی اطلاعات تکست باکس ها به داخل دیتا گرید ریخته میشود حالا من یک تکست باکس دیگه دارم که مبلغ نقدی میباشد که وقتی در داخل تکسن باکس مبلغ نقدی را بعد از اینکه اطلاعات در دیتاگرید میباشد اضافه کردم مبلغ نقدی در بانک ذخیره نمیشه و جای اون خالی میباشد راستش نمیدونم مشکل کجاست اگه راهنمایی کنید ممنون میشم

hamid59022
دوشنبه 03 شهریور 1393, 13:10 عصر
درود
به هر تعداد که ستون دارید میتونید خط زیر رو اضاف کنید:
NewRow["Column"] = textBox3.Text;
Column همون اسم ستون هست

سلام ببخشيد قسمت column شماره ستون است ؟؟؟

mz6488
دوشنبه 03 شهریور 1393, 13:19 عصر
سلام ببخشيد قسمت column شماره ستون است ؟؟؟

سلام.اگه داخل کوتیشن باشه میشه اسم ستون در غیر این صورت میشه شماره ستون که از صفر شروع میشه