PDA

View Full Version : كمك براي datagridview



hallaji
چهارشنبه 22 خرداد 1387, 02:08 صبح
مشكل بنده اينست كه نمي خواهم سطر آخر datagridview را كه خالي است را ذخيره كنم

كدي كه نوشتم اينه :


SqlConnection con = new SqlConnection();
SqlCommand cmd = new SqlCommand();
con.ConnectionString = "server=(local);database=program;uid=mehdi;password =123456";
int z = int.Parse(dataGridView1[5,0].Value.ToString());
for (int i = 0;i<z;i++)
{
string sqlcommand = string.Format("INSERT INTO temp (code,name,family,termb)VALUES('{0}','{1}','{2}',' {3}')", dataGridView2["code", i].Value.ToString(), dataGridView2["name", i].Value.ToString(), dataGridView2["family", i].Value.ToString(), dataGridView2["termb", i].Value.ToString());
cmd.CommandText = sqlcommand;
cmd.Connection = con;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
Close();

در ضمن Z ظرفيتي است كه بايد ذخيره كنم
-------------------------------------------------
آنچه كه شما را از ديگران متمايز ميسازد قدرت اراده تان است

mehrnoosh_al62
چهارشنبه 22 خرداد 1387, 09:13 صبح
سلام دوست عزیز
خاصیت AllowUserToAddRow رو در properties دیتاگریدویو false کن این خاصیت باعث میشه خط آخر که خالیه از بین بره

hallaji
چهارشنبه 22 خرداد 1387, 11:03 صبح
با سلام مجدد خدمت دوستان و برنامه نويسان عزيز

ببخشين - اونوقت من كلا نمي تونم اطلاعات وارد كنم در صورتي كه كليه اطلاعات را من از طريق datagridview وارد بانك اطلاعتي ميشود

احتمالا هم سوال را خوب ننوشتم

بنده مي خواهم بعد از اينكه اطلاعات را وارد datagridview كردم همه سطر ها را در پايگاه داده ذخيره كند بجز سطر آخر كه خالي است

-----------------------------------------------------
هيچ جايي مثله برنامه نويسي نميشود

mehrnoosh_al62
چهارشنبه 22 خرداد 1387, 11:49 صبح
خوب تو حلقه به جای z بذارید z-1

ASKaffash
چهارشنبه 22 خرداد 1387, 11:50 صبح
با سلام
با این کد حل میشود ؟


for (int i = 0;i<z-1;i++)

safiech
چهارشنبه 22 خرداد 1387, 12:01 عصر
سلام . من خوب متوجه نشدم چرا شما از z برای حلقه Forتون استفاده کردید تا عمل insert را انجام بدید .فکر می کنم اگه از یکی از Eventهای خود ِ DataGridView تون استفاده کنید مثل Rowleave و در اونجا این شرط رو بررسی کنید و بعد تک تک سطرهاتون را درج کنید ، مشکلتون حل بشه .البته امیدوارم .
if (e.rowindex<DataGridView1.Rows.count ) {Insert Code // }

hallaji
چهارشنبه 22 خرداد 1387, 21:28 عصر
با عرض سلام مجدد خدمت همه دوستان و برنامه نويسان گرامي
كدي كه من نوشتم اينه (كه اطلاعات ديتا گريد ويو را در ديتابيس ذخيره ميكند ):


SqlConnection con = new SqlConnection();
SqlCommand cmd = new SqlCommand();
con.ConnectionString = "server=(local);database=program;uid=mehdi;password =123456";
int z = 5;// ta 5 satr mitavanad zakhire shavad
for (int i = 0; i <z; i++)
{
string sqlcommand = string.Format("INSERT INTO kol(code) VALUES('{0}')",dataGridView2["code",i].Value.ToString());
cmd.CommandText = sqlcommand;
cmd.Connection = con;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}

و بنده ميخواهم با استفاده از اين كد تا 5 سطر (از 1 سطر تا 5 سطر ) اطلاعات را در ديتا گريد بنويسم و از آنجا وارد ديتابيس كنم
حالا اگر 5 سطر اطلاعات وارد ديتاگريدويو بكنم و به ديتا بيس بفرستم اصلا مشكلي ندارد
ولي اگر 4 سطر و يا 3 سطر و كمتر ... در ديتا گريد ويو بنويسم و بخواهم وارد ديتابيس كنم error مي دهد
و اگر بجاي z عبارت z-1 را بنويسم نميتوانم 5 سطر را كامل وارد ديتابيس بكنم بلكه 4 سطر وارد ديتابيس ميشود.
----------------------------------------------------------------------
هيچ جايي مثله برنامه نويسي نميشود.

Himalaya
پنج شنبه 23 خرداد 1387, 12:14 عصر
تو کد دکمه ای که میخواد عمل ذخیره رو انجام بده ، تو خط اولش میتونی این کد رو بنویسی
(قبل از اینکه دستورات مربوط به پایگاه داده رو بنویسی)
dataGridView1.AllowUserToAddRows = false
بعد همون کدهایی رو که تو تاپیک 1 نوشتی ، بنویس
و تو خط آخر مربوط به رویداد دکمه دوباره کد بالا رو مینویسی ولی اونو true میکنی تا کاربر دوباره اجازه داشته باشه از طریق گرید ویو سطری رو اضافه کنه .

hallaji
جمعه 24 خرداد 1387, 00:43 صبح
با سلام مجدد خدمت دوستان عزيز و برنامه نويسان گرامي

متاسفانه راه حل جناب Karaj333 نيز جواب نداد

ولي .....

كد من درآوردي بنده بدين صورت جواب داد :


int a = dataGridView2.Rows.Count - 1;
for (int i = 0; (i<z) && (i<a) ; i++)

-------------------------------------------------------
هيچ جايي مثله برنامه نويسي نمشود.