PDA

View Full Version : حرفه ای: افزودن یک سطر از طریق چندین textbox به datagridview بایند شده.



kamiloted
چهارشنبه 13 مرداد 1395, 19:00 عصر
سلام دوستان
یک دیتا گرید ویو دارم که اطلاعات یک انبار رو از جدول انبار می خونه.و بهتره بگم بایند شده.

حالا من میخوام این دیتا گرید رو تو فرم ویرایش باز کنم و ویرایش کنم.
حالا برای ویرایش ممکنه همون اطلاعات موجود رو ویرایش کنم.یا نیاز باشه یک سطر جدید به این دیتا گرید اضافه کنم.
که برای افزودن سطر جدید چنتا تکست باکس گذاشتم واطلاعات رو به دیتا گرید به صورت مستقیم وارد میکنم.
و در نهایت بر روی دکمه ثبت ویرایش کلیک میکنم و انبار مربوطه به روز میشه.
حالا من وقتی که سطر اضافه میکنم.
این خطا رو میده

Rows cannot be programmatically added to the DataGridView's rows collection when the control is data-bound.

حالا چه کدی پیشنهاد میدین که من بتونم سطر جدید رو اضافه کنم.؟تا خطا نده
دوستان من دیتا گرید رو با 2 تا جدول پر کردم.
کد بایند دیتا گرید: من با این کد اطلاعات رو میخونم

DataTable dt = new DataTable();
Database db = new Database();


dt = db.MySelect("SELECT tbl_1.Anbar,tbl_1.Product_id,tbl_2.Tehdad, " +
"FROM tbl_1 INNER JOIN tbl_2 ON tbl_1.Product_id = tbl_2.IdProduct where tbl_1.code='" + txt1.Text + "'");
dataGridView1.DataSource = dt;


دوستان از دیتا ست استفاده نمیکنم.پیشنهاد ندید
جستجو کردم تو سایتهای استک اور فالو-سی شارپ کرنر-سی شارپ پروجکت.اما مشکل منو برطرف نکردن.

ممنونم.

kamiloted
چهارشنبه 13 مرداد 1395, 20:50 عصر
کسی نیست راهنمایی کنه؟ممنونم

mrprestige
چهارشنبه 13 مرداد 1395, 21:05 عصر
سلام دوست من وقتت بخیر ، اگه منظورت رو درست متوجه شدم شما میتونید از طریق DataRow یه سطر به جدولتون اضافه کنید به این صورت که اول در کلاس Form به این صورت بنویسید

DataRow DR;
DataTable DT =new DataTable();

و بعد برای ایجاد سطر در datatable به این صورت عمل میکنید

DR = DT.NewRow();
DT.Rows.Add(DR);




حالا باز اگه مشکلی بود و سوالی از بنده داشتید پاسخ میدم .
پیروز موفق باشید

kamiloted
پنج شنبه 14 مرداد 1395, 15:34 عصر
سلام دوست من وقتت بخیر ، اگه منظورت رو درست متوجه شدم شما میتونید از طریق DataRow یه سطر به جدولتون اضافه کنید به این صورت که اول در کلاس Form به این صورت بنویسید

DataRow DR;
DataTable DT =new DataTable();

و بعد برای ایجاد سطر در datatable به این صورت عمل میکنید

DR = DT.NewRow();
DT.Rows.Add(DR);




حالا باز اگه مشکلی بود و سوالی از بنده داشتید پاسخ میدم .
پیروز موفق باشید

ممنونم آغا محسن.
من با این کد سطر جدید رو اضافه میکنم


private void btnSabt_Click(object sender, EventArgs e)
{
if (txt1.Text == "" && txtPas.Text == "")
{
MessageBox.Show(".فیلدهای خالی را پر کنید");
}
else
{

string Column1 = "55";
string Column2 = txtAnbar.Text;
string Column3 = txtID.Text;
string[] row = { Column1, Column2, Column3 };
dataGridView1.Rows.Add(row);

}



حالا باید چکار کنم.؟
ممنونم که وقت میزارین

mrprestige
پنج شنبه 14 مرداد 1395, 17:54 عصر
خب تو با این کد داری فقط سطر روی دیتاگریدت اضافه میکنی دیتابیس پس چی میشه این وسط ؟ به همین خاطر همچین خطایی بهت میده که " نمیتونی بصورت کدنویسی سطری رو به دیتاگریدی که Bind شده به دیتابیس اضافه کنی " به همین خاطره که من اون کدی که برات در پست قبلیم نوشتم . از طریق DataRow عمل اضافه کردن سطر رو در دیتابیس انجام بده و سپس از دیتاگرید برای نمایش اون سطر ها یا بهتر بگم جدولت استفاده کن .

پیروز موفق باشی آغا آریا .

kamiloted
پنج شنبه 14 مرداد 1395, 23:19 عصر
خب تو با این کد داری فقط سطر روی دیتاگریدت اضافه میکنی دیتابیس پس چی میشه این وسط ؟ به همین خاطر همچین خطایی بهت میده که " نمیتونی بصورت کدنویسی سطری رو به دیتاگریدی که Bind شده به دیتابیس اضافه کنی " به همین خاطره که من اون کدی که برات در پست قبلیم نوشتم . از طریق DataRow عمل اضافه کردن سطر رو در دیتابیس انجام بده و سپس از دیتاگرید برای نمایش اون سطر ها یا بهتر بگم جدولت استفاده کن .

پیروز موفق باشی آغا آریا .

ممنونم.
بنده به دلایلی نمی تونم اونا رو هر لحظه به جدول اضافه کنم.
بعد دیتاگرید رو لود کنم.

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

mrprestige
جمعه 15 مرداد 1395, 00:47 صبح
احیانا نکنه منظور شما این کدی هست که براتون نوشتم

DataTable dt = dataGridView1.DataSource as DataTable;
for (int i = 0; i < 4; i++)
{
DataRow row = dt.NewRow();
dt.Rows.Add(row);
}


این کد میاد دیتاگریدتون رو بایند میکنه به دیتا تیبل و بعد با یه حلقه هرچند تا میخوای سطر اضافه میکنی به دیتاگرید و در نهایت دیتابیس

و اینکه اگه نمیخواید به جدول متصل بشه (Unbound) هم این کد میشه که با توجه به اینکه دیتاگریدتون به جدول متصل هست همون خطایی که در پست قبل گذاشتی رو بهت میده

for (int i = 0; i < 4; i++)
{
int n = dataGridView2.Rows.Add();
dataGridView2.Rows[n].Cells[0].Value =مقدار مورد نظر;
}


پیروز موفق باشی