PDA

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



Iran58
شنبه 09 مرداد 1389, 14:02 عصر
سلام
يك فرم دارم(فرم1)كه درآن يك ديتاگريد دارم( كه ستونهاي آن برابر است با نام،نشان و جنست)كه اطلاعات را از بانك مربوطه مي خواند ونمايش مي دهد
حال مشكل اساسي من اينست كه
ميخواهم هنگاميكه روي سطري دابل كليك كردم اطلاعات به تكست باكس وكبوباكس هاي فرم 2انتقال پيدا كند(براي كمبوباكس مي خوام هم DisplayMember وValueMember )
باتشكر

xman_dj
شنبه 09 مرداد 1389, 15:38 عصر
میتونی تو اون فرمی که توش تکس باکس ها و لیبل ها و .. هست که میخوای پرشون کنی ---------یک تابع بنویسی به صورت عمومی که مقدار ها رو بگیره تو تکس باکس قرار بده
بعد از فرمی که گرید داره وقتی روی دیتا گرید کلیک میشه اطلاعات مربوط به اون سطرو بخونی و اون تابع رو که نوشتی رو فراخوانی کنی و مقادیر خوانده شده رو توش بگذاری

Masoome_das
شنبه 09 مرداد 1389, 18:25 عصر
سلام
فرم 1 دارم كه داخل آن عمل ثبت وويرايش را انجام مي دهم و يك دكمه دارم كه هرگاه روي آن كليك كردم فرم 2ظاهر مي شودكه درآن يك ديتاگريد است كه كل اطلاعات ثبت شده در فرم را به ما نمايش مي دهد(مثلا 100ركورد )حال مي خواهم هرگاه روي يكي از سطرهاي ديتاگريد موردنظر دابل كليك كردم اطلاعات آن سطر به تكست باكسها وكمبوباكس مرتبط در فرم 1 انتقال پيداكند

شما برای انجام این کار باید از متغیر های Public که در هر دو فرم شناخته شود استفاده کنید
یک روش اینکه کلید سطری که انتخاب شده را در متغیر عمومی بریزید و در فرم اول این متغیر را فراخوانی کنید به کمک کلید دوباره اطلاعات مربوط به آن سطر را از بانک بخوانید. و datagride,combo را پرکنید.
روش دوم اینکه یک DataRow به صورت Public تعریف کنید و سطر انتخاب شده را به آن نسب دهید ولی این کار کمی دردسر داره چون باید از تبدیل نوع استفاده کنید تعریف سطر در گرید و کمبو به صورت DataRow نیست.

mmd2009
شنبه 09 مرداد 1389, 18:58 عصر
با سلام.

پیشنهاد میکنم از پراپریتی استفاده بکنید

#aliyari_C
شنبه 09 مرداد 1389, 19:38 عصر
سلام
از روش شی گرا هم می توانی استفاده کنی

اول:ایجاد کلاس


public static class CDataBase
{

public static DataSet PDataSet
{
get;
set;
}

}



دوم:برای فرم اولی


private void button1_Click(object sender, EventArgs e)
{
OleDbDataAdapter.Fill(CDataBase.PDataSet);
//یا می تونیم فرض کنیم که قبلا دستکاری (درج و حذف ) شده است

Form2 F2 = new Form2();
F2.Show();

}



سوم: برای فرم سومی


private void Form1_Load(object sender, EventArgs e)
{
DataGrid1.DataSource = CDataBase.PDataSe;
}


موفق باشی
__________________________________________________ __________________________________________________
چون به دریا می توانی راه یافت
سوی یک قطره چرا باید شتافـت

نتایج آماری,مقایسه ای بین String و StringBuildr (http://www.barnamenevis.org/forum/showthread.php?t=233987)

mmd2009
شنبه 16 مرداد 1389, 18:18 عصر
دوست عزیز شما میخوای فقط یک رکورد رو بفرستی به تکست باکس ها و کمبوباکس های یک فرم دیگه؟؟

با توجه به سوال یعنی اینو میخوای درسته؟

Iran58
یک شنبه 17 مرداد 1389, 07:39 صبح
دوست عزیز شما میخوای فقط یک رکورد رو بفرستی به تکست باکس ها و کمبوباکس های یک فرم دیگه؟؟

با توجه به سوال یعنی اینو میخوای درسته؟

باسلام
بله منظورم همينه
باتشكر

C Sharp
یک شنبه 17 مرداد 1389, 07:45 صبح
اگه میخوای اطلاعاتت بصورت همزمان تو فرم دوم هم قابل ویرایش باشه ، روش بهتر ارسال bindingSource به فرم دومه



public partial class SubForm : Form
{

private BindingSource _bindingSource;
public SubForm(BindingSource bindingSourceMain)
: this()
{
bindingSource = bindingSourceMain_;
}

private void SubForm_Load(object sender, EventArgs e)
{
textBox.DataBindings.Add(new Binding("Text", _bindingSource, "Field1"));

comboBox.DataSource = _bindingSource;
comboBox.DisplayMember = "Field2";
comboBox.ValueMember = "Field3";
}