PDA

View Full Version : عملیات درج و ویرایش و حذف در دو دیتاگرید به طور همزمان



programerinfonet
چهارشنبه 11 دی 1392, 12:44 عصر
سلام دوستان
من تو فرمم دو تا گرید دارم که به طور همزمان در هر دو عملیات درج و حذف و ... انجام میگیرد
در گرید اول یک فیلد نام کارخانه وجود دارد و در گرید دوم دو فیلد نام کارخانه و نام محصول ثبت میشود
حالا چگونه میشه گفت که تو گرید دوم فقط نام محصول وارد شود و نام کارخانه (فیلد id)از سطری جاری گرید اول انتخاب شود ؟ این کد رو نوشتم اما کار نکرد

adap2.InsertCommand = new SqlCommand("INSERT INTO Table_Model (Berand_ID,Model) VALUES (@Berand_ID,@Model)", cn);
adap2.InsertCommand.Parameters.AddWithValue("@Berand_ID", typeof(int)).SourceColumn = "Berand_ID";
adap2.InsertCommand.Parameters.AddWithValue("@Model", typeof(string)).SourceColumn = "Model";

hmbarnamenevis
چهارشنبه 11 دی 1392, 13:53 عصر
string id = datagridview1["id",datagridview1.currentrow.index].value.tostring();

programerinfonet
چهارشنبه 11 دی 1392, 14:53 عصر
مشکل با کد فوق حل نشد
اجازه بدید سوالمو جوری دیگه بپرسم
الان به این کد توجه کنید

adap2.InsertCommand = new SqlCommand("INSERT INTO Table_Model (Berand_ID,Model) VALUES (@Berand_ID,@Model)", cn);
adap2.InsertCommand.Parameters.AddWithValue("@Berand_ID", typeof(int)).SourceColumn = "Berand_ID";
adap2.InsertCommand.Parameters.AddWithValue("@Model", typeof(string)).SourceColumn = "Model";

الان تو کد فوق پارامتر @Berand_ID داره از ستون @Berand_ID دیتاگرید 2 خونده میشه که میخوام از ستون 0 دیتاگرید 1 خونده بشه
چی کار کنم ؟

hmbarnamenevis
چهارشنبه 11 دی 1392, 15:00 عصر
منظورتون رو متوجه نمی شوم؟؟
مگه شما قرار نیست id مربوط به این دستور Insert رو از توی دیتاگرید2 بخونید؟
اگر اینگونه است پس کد من موردی نداره کافیه شماره سطر رو بدی(که من سطر جاری رو در نظر گرفتم) و مقدار را از آن بخوانی و به این دستور بدی.
بعد از آن من از این روش استفاده نمی کنم؛ من یک کلاس نوشتم که تمام دستورات sql پروژه رو اجرا می کند. شما کافی است دستور و مقادیر را به کلاس بدهید تا دستور را اجرا کند و اتصال به پایگاه را هم خود کلاس برقرار می کند.

programerinfonet
چهارشنبه 11 دی 1392, 15:04 عصر
114687

این عکسو ببینید
هر کدوم از ددیتاگریدها به یک جدول که پایینش کشیدم متصل شده
حالا میخوام تو گرید دومی (سمت چپی) فقط ستون مدل رو کاربر وارد کنه و ستون اولش که کد برن باشه و من مخفیش کردم از سطری که در گرید سمت راستی انتخابه مقدار بگیره
امیدوارم تونسته باشم سوالمو خوب پرسیده باشم

hmbarnamenevis
چهارشنبه 11 دی 1392, 15:23 عصر
منظورتون رو فهمیدم ولی شیوه ای که من کد می نویسم با شما فرق می کند. شما باید این دستور sql را اجرا کنید تا رکورد جدید درج شود:
//datagridview1=جدول سمت راست
//datagridview2=جدول سمت چپ

string id=dataGridView1["id", dataGridView1.CurrentRow.Index].Value.ToString();
string sql="INSERT INTO Table_Model (Berand_ID,Model) VALUES ({0},'{1}')"
sql=string.format(sql,int32.parse(id),NewModel);
//کد شما در متغیر اسکیوال است و کافی است آن را اجرا کنید

programerinfonet
چهارشنبه 11 دی 1392, 15:42 عصر
جااااان ؟ چی شد ؟ میشه یکم توضیح بدید الان اون 0 و 1 چین ؟ اون NewModel چیه ؟ من الان فقط زبون کد نویسی خودم حالیم میشه توی اون نمی دونی باید چه جور بنویسم ؟

hmbarnamenevis
چهارشنبه 11 دی 1392, 16:16 عصر
تفاوتی نداره شما مقادیری که باید به دستورتان پاس بدید رو با @ و غیره انجام دادید و من با {} ؛ متاسفانه با روش شما هنوز کار نکردم. ولی تفاوتی هم نداره شما با کد خودتون متغیر id من رو به دستورتون پاس بدید.
در دستور من هم id مربوط به id انتخاب شده در گرید ویوو سمت راست است و newmodel هم مدل جدیدی که تایپ شده و می خواهید اضافه کنید.

hmbarnamenevis
چهارشنبه 11 دی 1392, 16:17 عصر
تفاوتی نداره شما مقادیری که باید به دستورتان پاس بدید رو با @ و غیره انجام دادید و من با {} ؛ متاسفانه با روش شما هنوز کار نکردم. ولی تفاوتی هم نداره شما با کد خودتون متغیر id من رو به دستورتون پاس بدید.
در دستور من هم id مربوط به id انتخاب شده در گرید ویوو سمت راست است و newmodel هم مدل جدیدی که تایپ شده و می خواهید اضافه کنید.