PDA

View Full Version : سوال: نحوه ریختن سطرهای خاصی از دیتاگرید ویو در دیتاتیبل



generic
شنبه 29 بهمن 1390, 22:48 عصر
من لازم دارم سطرهایی از دیتاگرید ویو را در دیتاتیبل بذارم که ستون(فرضا ستون تعداد) آن سطر در دیتا گرید ویو توسط کاربر مقداردهی شده باشد(آن ستون را کاربر وارد میکند).
یعنی سطرهایی که ستون "تعداد" آن مخالف نال میباشد را در دیتاتیبل بذاریم.
خیلی ممنون خواهیم شد اگر کسی از دوستان راهنمایی کنند.

shadi khanum
شنبه 29 بهمن 1390, 22:56 عصر
دوست عزیز یه loop میزنی روی ردیفهای datagridتون و اونهایی که ستون مربوطه شون مقدار داره رو بر اساس اینکه جدول دیتابیست چه فیلدهایی داره واسش insert query میسازی و command رو Execute میکنی

for(int i = 0;i<grid.rows.count;i++)
{
if (grid.rows[i].cells["tedad"].value <> null)
{
cmd.commandtext = "insert into ...."
cmd.executeNonQuery()
}

}

generic
یک شنبه 30 بهمن 1390, 01:40 صبح
دوست عزیز یه loop میزنی روی ردیفهای datagridتون و اونهایی که ستون مربوطه شون مقدار داره رو بر اساس اینکه جدول دیتابیست چه فیلدهایی داره واسش insert query میسازی و command رو Execute میکنی

for(int i = 0;i<grid.rows.count;i++)
{
if (grid.rows[i].cells["tedad"].value <> null)
{
cmd.commandtext = "insert into ...."
cmd.executeNonQuery()
}

}


با تشکر که وقت گذاشتین.



اما دوست عزیز مشکل من اینه که وقتی با حلقه for میخونیم گذاشتن سطر به سطر در دیتا تیبل میباشد.
ستونهای گریدم را (col1,col2,col3) فرض کنید.

shadi khanum
یک شنبه 30 بهمن 1390, 08:14 صبح
دوست عزیز شما دستور insert رو میخوای؟
با فرض اینکه جدولتون اسمش table1 باشه و سه تا فیلد داشته باشه به اسم fileld1 تا 3 که قرار مقادیر col1 و col2 و Col3 توش ریخته شه و col2 فرضا از نوع رشته باشه و دو تای دیگه integer و عددی باشه..
به جای اون خط 5:

cmd.commandtext ="insert into table1(field1,field2,field3) values(" + grid.rows[i].cells["col1"].value + ", '" + grid.rows[i].cells["col2"].value + "' , " + grid.rows[i].cells["col3"].value + ")"

generic
یک شنبه 30 بهمن 1390, 12:14 عصر
نمیخوام در دیتابیس ذخیره کنم میخوام مستقیم از گرید در دیتاتیبل ذخیره کنم یعنی با

DataTable newProducts = new DataTable();
DataRow row = newProducts.NewRow();
DataColumn productID = new DataColumn();
newProducts.Columns.Add(productID);


داخل حلقه for بالا سطرها وستونهای دیتاتیبل را که ایجاد میکنیم مقداردهی کنیم. البته ستونهای دیتاتیبل ثابت هستند ولی سطرهاش معلوم نیستن.

Mahmoud Zaad
یک شنبه 30 بهمن 1390, 12:38 عصر
سلام
خدا رو شکر این دفعه تاپیک حذف نشد، پیگیری تو هم عالیه!
اینچا (http://barnamenevis.org/showthread.php?312844-ارسال-پارمترهای-یک-گرید-ویو-به-کریستال-ریپورت)رو ببینید.

generic
یک شنبه 30 بهمن 1390, 16:02 عصر
تشکر از همتون
تا پیدا کنم ....
ولی جور کردم آخرش

publicDataTable CreateDataTable(DataGridView dgv)
{
DataTable dt = newDataTable();
dt = MakeTable();
for (int i = 0; i < dgv.rows.count; i++)
{
if (dgv.rows[i].cells["Number"].value != null)
{
DataRow row = dt.NewRow();
row["FoodName"] = dgv.Rows[i].Cells["FoodName"].Value.ToString();
row["Number"] = dgv.Rows[i].Cells["Number"].Value.ToString();
row["FoodPrice"] = dgv.Rows[i].Cells["FoodPrice"].Value.ToString();
dt.Rows.Add(row);
}
}
return dt;
}


privatestaticDataTable MakeTable()
{
// Create a new DataTable named NewProducts.
DataTable newRows = newDataTable("Rows");
// Add three column objects to the table.
DataColumn FoodName = newDataColumn();
FoodName.DataType = System.Type.GetType("System.String");
FoodName.ColumnName = "FoodName";
newRows.Columns.Add(FoodName);
DataColumn Number = newDataColumn();
Number.DataType = System.Type.GetType("System.String");
Number.ColumnName = "Number";
newRows.Columns.Add(Number);
DataColumn FoodPrice = newDataColumn();
FoodPrice.DataType = System.Type.GetType("System.String");
FoodPrice.ColumnName = "FoodPrice";
newRows.Columns.Add(FoodPrice);

return newRows;

}