PDA

View Full Version : انتقال اطلاعات از فرم فرزند به کنترل دیتاگرید والد



programerinfonet
شنبه 29 مهر 1391, 12:58 عصر
سلام دوستان عزیز
من تو فرم 1 یک کنترل datagridview دو یک دکمه دارم که با فشردن دکمه فرم دیگری باز میشود که حاوی 3 کنترل textbox می باشد .
حالا من میخوام با پر کردن این 3 تکست باکس و بستن فرم این سه مقدار در دیتاگرید تنایش داده بشن

حسین شهریاری
شنبه 29 مهر 1391, 13:25 عصر
خب اطلاعات را توی فرم دوم توی پایگاه داده درج کنین و در فرم اول بخونین و بریزید توی گرید.

programerinfonet
شنبه 29 مهر 1391, 13:30 عصر
نه اون طوری نمیخوام باشه
دوستان یکی کمک کنه خواهشأ
کمک

morteza271
شنبه 29 مهر 1391, 13:33 عصر
مراحل زیر رو انجام بدین :
تکست باکس های مورد نظر در فرم 2 رو public تعریف کنید.

در رویداد کلیک کلید ذخیره در فرم 2 کد زیر رو بنویسید :
private void button1_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.Yes;
}

در رویداد کلیک کلید انصراف فرم 2 کد زیر رو بنویسید :
private void button2_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.No;
}

در رویداد کلیک کلید بازکردن فرم 2 در فرم 1 کد زیر رو بنویسید :
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
if (frm2.ShowDialog() == DialogResult.Yes)
{
dataGridView1.Rows.Add(frm2.textBox1.Text, frm2.textBox2.Text, frm2.textBox3.Text);
}
}

موفق باشید

حسین شهریاری
شنبه 29 مهر 1391, 13:33 عصر
میتونی با DataRow فیلدها را بگیری، بعد بیای و اون سطر را در DataSet یا DataTable که به گرید وصله درج کنی.

programerinfonet
شنبه 29 مهر 1391, 15:40 عصر
مراحل زیر رو انجام بدین :
تکست باکس های مورد نظر در فرم 2 رو public تعریف کنید.

در رویداد کلیک کلید ذخیره در فرم 2 کد زیر رو بنویسید :
private void button1_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.Yes;
}

در رویداد کلیک کلید انصراف فرم 2 کد زیر رو بنویسید :
private void button2_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.No;
}

در رویداد کلیک کلید بازکردن فرم 2 در فرم 1 کد زیر رو بنویسید :
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
if (frm2.ShowDialog() == DialogResult.Yes)
{
dataGridView1.Rows.Add(frm2.textBox1.Text, frm2.textBox2.Text, frm2.textBox3.Text);
}
}

موفق باشید


این کد زمانی که ستون های دیتاگرید رو دستی می سازی کار می کنه
من دیتاگریدم به بانک متصله فقط میخوام رکورداشو دستی از فرمی دیگه بیارم و بعد ذخیره کنم
لطفأ کمکم کنید ممنون

programerinfonet
شنبه 29 مهر 1391, 16:07 عصر
94185

این خطارو میده
چی کار کنم

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

programerinfonet
شنبه 29 مهر 1391, 17:23 عصر
یکی کمک کنه
خیلی ضروریه به خدا موندم توش
خواهشأ کمک کنید

Mahmoud Zaad
شنبه 29 مهر 1391, 18:07 عصر
سلام
همونطور که از خطا هم معلومه به دیتاگریدی که بایند شده نمی تونیم به صورت دستی، داده اضافه کنیم. شما می تونید عملیات ثبت رو توی همون فرم دوم انجام بدید و موقع بسته شدن این فرم در رویداد FormClosing با یه سلکت دوباره اطلاعات رو به دیتاگریدویو فرم اول بایند کنید.

morteza271
شنبه 29 مهر 1391, 18:09 عصر
خوب از اول بگین!
کد پر کردن گریدتون رو بذارین تا بهتون بگم چیکار کنین...

programerinfonet
شنبه 29 مهر 1391, 18:15 عصر
اگه تو همون فرم اول که دیتاگرید ویو هست بخوام اضافه کنم چی میشه ؟
یعنی تو فرم اول میشه به دیتاگرید بایند شده اطلاعات اضافه کرد ؟

Mahmoud Zaad
شنبه 29 مهر 1391, 18:20 عصر
کلاً به دیتاگرید بایند شده نمیشه به صورت دستی اطلاعات اضافه کرد. با همون سلکت مگه کارت راه نمیفته؟

programerinfonet
شنبه 29 مهر 1391, 18:33 عصر
string d;
SqlDataAdapter adap;
DataSet ds = new DataSet();
d = "select * from virtualkala";
adap = new SqlDataAdapter(d, my_con);
adap.Fill(ds, "virtualkala");
dgv.DataSource = ds.Tables["virtualkala"];
//dgv.Columns["id"].Visible = false;
dgv.Columns["idsanad"].Visible = false;
dgv.Columns["state"].Visible = false;
dgv.Columns["kala"].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMod e.Fill;
dgv.Columns["tedad"].Width = 80;
dgv.Columns["fi"].Width = 100;
dgv.Columns["mablagh"].Width = 100;
dgv.Columns["visitory"].Width = 100;
dgv.Columns["kala"].HeaderText = "شـــرح ";
dgv.Columns["tedad"].HeaderText = "مقدار";
dgv.Columns["fi"].HeaderText = "قیمت ";
dgv.Columns["mablagh"].HeaderText = "مبلغ سطر ";
dgv.Columns["visitory"].HeaderText = "ویزیتوری ";

morteza271
شنبه 29 مهر 1391, 18:56 عصر
اینطوری میتونید اطلاعات رو به دیتاتیبلی که به گریدتون وصل کردین اضافه کنید :
این کد رو می تونید به جای کد قبلی بذارین...
ds.Tables["virtualkala"].Rows.Add(frm2.textBox1.Text, frm2.textBox2.Text, frm2.textBox3.Text);

فقط دقت کنید که ds رو به صورت عمومی در فرم تعریف کنید.
موفق باشید

programerinfonet
شنبه 29 مهر 1391, 18:59 عصر
اونوقت اینو کجا تعریفش کنم ؟؟؟
من الان نفهمیدم چی شد
میشه توضیح بدین ممنون

programerinfonet
شنبه 29 مهر 1391, 19:05 عصر
دستت درد نکنه دادا درست شد