PDA

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



Yanehsar
جمعه 20 مرداد 1391, 11:26 صبح
سلام دوستان
من يه مشكل دارم اطلاعات رو از ديتاگريد به فرم 2 انتقال ميدم اطلاعاتي كه داخل كمبوباكس،تكس باكس و...پر ميشه.اما كمبوباكسم با اطلاعات گريدم يكي نيست چونكه از بانك پر ميشه.حالا چيكار كنم كه هم اطلاعات از بانك پر بشه هم با اطلاعات ارسالي از ديتاگريد مطابقت داشته باشه؟

nunegandom
جمعه 20 مرداد 1391, 13:08 عصر
تا اونجایی که من متوجه شدم، جواب شما:
از دیتا سورس استفاده کن!

Yanehsar
جمعه 20 مرداد 1391, 13:13 عصر
يعني چي؟!؟نفهميدم:متفکر:

nunegandom
جمعه 20 مرداد 1391, 13:23 عصر
اطلاعات رو بفرست به BindingSource بعد اونجا چک کن که مطابقت دارن یا نه
ببخشید پست قبل اسمشو اشتباه گفتم! :بامزه:
بعد از BindingSource برا پر کردن اطلاعات استفاده کن

tooraj_azizi_1035
جمعه 20 مرداد 1391, 13:48 عصر
سلام
به این لینک آموزشی نگاه کن: http://barnamenevis.org/showthread.php?352435-%D9%87%D9%85%D8%A7%D9%87%D9%86%DA%AF%DB%8C-%D8%AF%D8%A7%D8%AF%D9%87-%D8%A7%DB%8C-%D8%A8%DB%8C%D9%86-%DA%A9%D9%86%D8%AA%D8%B1%D9%84-%D9%87%D8%A7%DB%8C-Bind-%D8%B4%D8%AF%D9%87-%D9%81%D8%B1%D9%85-%D9%88-%D9%86%D8%A7%D9%85%D8%B1%D8%A6%DB%8C-%DA%A9%D8%B1%D8%AF%D9%86-%D9%BE%D8%B3-%D8%B2%D9%85%DB%8C%D9%86%D9%87-%DA%A9%D9%86%D8%AA%D8%B1%D9%84-%D9%87%D8%A7%DB%8C-Custom&highlight=%DA%A9%D9%86%D8%AA%D8%B1%D9%84+%D9%87%D8 %A7%DB%8C+Custom

Yanehsar
جمعه 20 مرداد 1391, 13:50 عصر
اطلاعات رو بفرست به BindingSource بعد اونجا چک کن که مطابقت دارن یا نه
ببخشید پست قبل اسمشو اشتباه گفتم! :بامزه:
بعد از BindingSource برا پر کردن اطلاعات استفاده کن
من براي انتقال از كدهاي زير استفاده ميكنم


editfaktor.cbDoctors.Text = dgw["name_dr", dgw.CurrentRow.Index].Value.ToString();

حالا ميشه محبت كنيد بگيد چه تغييري بايد انجام بدم؟؟!؟
cbDoctors در فرم دوم هستش كه بعد از Load شدن از بانك پر ميشه:ناراحت:

Mahmoud.Afrad
جمعه 20 مرداد 1391, 15:29 عصر
ابتدا باید اندیس اون آیتم پیدا بشه و بعد اون اندیس از کمبو سلکت بشه. البته اینکه این کار به چه صورتی انجام بشه به خودتون بستگی داره یک راه میتونه به صورت زیر باشه
foreach (DataRow dtrow in dt.Rows)
{
if (dtrow["name"].ToString() == dgw["name_dr", dgw.CurrentRow.Index].Value.ToString())
{
comboBox1.SelectedIndex = dt.Rows.IndexOf(dtrow);
return;
}
}

/* // OR
dt.Rows.OfType<DataRow>().ToList().SingleOrDefault(dtrow =>
{
if (dtrow["name"].ToString() == dgw["name_dr", dgw.CurrentRow.Index].Value.ToString())
{
comboBox1.SelectedIndex = dt.Rows.IndexOf(dtrow);
return true;
}
return false;
});
*/
dt دیتاتیبلی هست که به کمبو بایند شده
به جای "name" نام ستونی از دیتاتیبل که به کمبو بایند شده

Yanehsar
جمعه 20 مرداد 1391, 16:20 عصر
من از كدها استفاده كردم


dt.Rows.OfType<DataRow>().ToList().SingleOrDefault(dtrow =>
{
if (dtrow["name"].ToString() == dgw["name_dr", dgw.CurrentRow.Index].Value.ToString())
{
comboBox1.SelectedIndex = dt.Rows.IndexOf(dtrow);
return true;
}
return false;
});
*/[/CODE]
dt دیتاتیبلی هست که به کمبو بایند شده
به جای "name" نام ستونی از دیتاتیبل که به کمبو بایند شده
كه از خط


if (dtRow["family"].ToString() == fa.dgw["name_dr", fa.dgw.CurrentRow.Index].Value.ToString())

خطائي Object reference not set to an instance of an object. ميده.
اونجائي كه من از fa.dgw استفاده كردم به اين دليله كه ديتاگريدم داخل فرم اولم هستش.

veniz2008
جمعه 20 مرداد 1391, 16:44 عصر
سلام. برای ست کردن کمبوباکس با مقدار انتخاب شده از گریدویو شما به این یه خط کد نیاز دارید. من گرید رو روی فرم 1 گذاشتم و با کلیک روی هر سطر میخوام مثلا نام کاربری اون داخل کمبوباکس قرار بگیره. وقتی روی گرید کلیک میکنی ، id اون سطر رو بردار و داخل یه متغیر ذخیره کن. من اسمشو گذاشتم MyID( این id در واقع همون valuemember کمبوباکس هست). حالا در فرم 2 که کمبوباکس هست بعد از کدهای مربوط به پر کردن کمبو ، کافیه این یه خط کد رو قرار بدی.

comboBox1.SelectedValue = Form1.MyID;
متغیر MyID رو هم بصورت سراسری در فرم1 بنویس. به اینصورت:

public static string MyID = "";
موفق باشی.

Mahmoud.Afrad
جمعه 20 مرداد 1391, 17:17 عصر
من از كدها استفاده كردم

كه از خط


if (dtRow["family"].ToString() == fa.dgw["name_dr", fa.dgw.CurrentRow.Index].Value.ToString())

خطائي Object reference not set to an instance of an object. ميده.
اونجائي كه من از fa.dgw استفاده كردم به اين دليله كه ديتاگريدم داخل فرم اولم هستش.
اون کدی که من گذاشتم را توی فرم اول باید بنویسی. پس به جای fa باید this بزاری. اگر بازم همون خطا رو داد به جای tostring از convert.tostring استفاده کن.

Yanehsar
جمعه 20 مرداد 1391, 17:39 عصر
سلام. برای ست کردن کمبوباکس با مقدار انتخاب شده از گریدویو شما به این یه خط کد نیاز دارید. من گرید رو روی فرم 1 گذاشتم و با کلیک روی هر سطر میخوام مثلا نام کاربری اون داخل کمبوباکس قرار بگیره. وقتی روی گرید کلیک میکنی ، id اون سطر رو بردار و داخل یه متغیر ذخیره کن. من اسمشو گذاشتم MyID( این id در واقع همون valuemember کمبوباکس هست). حالا در فرم 2 که کمبوباکس هست بعد از کدهای مربوط به پر کردن کمبو ، کافیه این یه خط کد رو قرار بدی.

comboBox1.SelectedValue = Form1.MyID;
متغیر MyID رو هم بصورت سراسری در فرم1 بنویس. به اینصورت:

public static string MyID = "";
موفق باشی.

داخل فرم اول كه متغيير static تعريف ميكنم داخل فرم دوم قابل دسترسي نيست.فقط public تعريف ميكنم قابل دسترسي هستش كه اونم خطا داره و اجرا نميشه