PDA

View Full Version : سوال: ثبت گروهی اطلاعات در sql از طریق datagridview



night-wolf
سه شنبه 27 بهمن 1394, 16:33 عصر
با سلام
وقت بخیر
من یه برنامه حسابداری نوشتم که میاد ابتدا در قسمت فاکتور فروش توسط کاربر تو دیتاگرید ویوو سطر به سطر کالا اضافه میکنه که کالا شامل کد،نام،فی،واحد و غیره هستش حالا من میخوام همه این

سطرهارو که مشخص نیست چند سطر باشه رو بصورت گروهی تو دیتابیس ثبت کنم تا اونجا که میدونم باید از آرایه ها هم استفاده کرد چون مشخص نیست چنتا رکورد میخوان ثبت بشن اما چطور ؟؟؟؟

لطفا راهنمایی کنید

با تشکر:لبخندساده:

csharpcollegian
سه شنبه 27 بهمن 1394, 17:13 عصر
سلام
در ابتدا با استفاده از یک if مطمئن بشید که در فاکتور رکوردی وجود داره :

if (dgvFactor.RowCount > 0)
بعد با استفاده از یه foreach به راحتی شروع به ثبت تک تک رکوردها در دیتابیس کنید :

foreach (GridViewRowInfo row in dgvFactor.Rows)
{
.
.
.
}

night-wolf
سه شنبه 27 بهمن 1394, 17:46 عصر
سلام
در ابتدا با استفاده از یک if مطمئن بشید که در فاکتور رکوردی وجود داره :

if (dgvFactor.RowCount > 0)
بعد با استفاده از یه foreach به راحتی شروع به ثبت تک تک رکوردها در دیتابیس کنید :

foreach (GridViewRowInfo row in dgvFactor.Rows)
{
.
.
.
}
خب مثال بزنید چطور اخه من که نمیدونم چنتا رکورد قراره ثبت بشه باید از آرایه استفاده بشه اما چطوری؟

ممنون میشم کاملترش کنید

csharpcollegian
سه شنبه 27 بهمن 1394, 19:34 عصر
خب مثال بزنید چطور اخه من که نمیدونم چنتا رکورد قراره ثبت بشه باید از آرایه استفاده بشه اما چطوری؟

ممنون میشم کاملترش کنید


اصلا نیازی ندارید بدونید چند تا رکورد قراره ثبت بشه، مزیت foreach همینه
ببینید فرض کنید شما با استفاده از کلاس Factor اطلاعات هر فاکتورتون رو در دیتابیس ثبت می کنید و همچنین اسم دیتاگریدویوتون هم dgvFactor هستش :

foreach (GridViewRowInfo row in dgvFactor.Rows)
{
Factor faObj = new Factor();
faObj.ID = Convert.ToInt32(row.Cells["clmnID"].Value);
faObj.Name = row.Cells["clmnName"].Value.ToString();
faObj.Price = Convert.ToInt64(row.Cells["clmnPrice"].Value);
.
.
.
faObj.Insert();
}

این کد تمام رکوردهای موجود در دیتاگریدویو رو دونه دونه در دیتابیس ثبت می کنه (البته اینجا دیتاگریدویو رو از نوع تلریک در نظر گرفتم)
موفق باشید

csharpcollegian
سه شنبه 27 بهمن 1394, 19:38 عصر
من که نمیدونم چنتا رکورد قراره ثبت بشه باید از آرایه استفاده بشه اما چطوری؟

در ضمن تعداد رکوردها رو هم این کد بهتون میده (گرچه نیازی نیست) :

dgvFactor.RowCount

night-wolf
چهارشنبه 28 بهمن 1394, 05:27 صبح
اصلا نیازی ندارید بدونید چند تا رکورد قراره ثبت بشه، مزیت foreach همینه
ببینید فرض کنید شما با استفاده از کلاس Factor اطلاعات هر فاکتورتون رو در دیتابیس ثبت می کنید و همچنین اسم دیتاگریدویوتون هم dgvFactor هستش :

foreach (GridViewRowInfo row in dgvFactor.Rows)
{
Factor faObj = new Factor();
faObj.ID = Convert.ToInt32(row.Cells["clmnID"].Value);
faObj.Name = row.Cells["clmnName"].Value.ToString();
faObj.Price = Convert.ToInt64(row.Cells["clmnPrice"].Value);
.
.
.
faObj.Insert();
}

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

csharpcollegian
چهارشنبه 28 بهمن 1394, 06:15 صبح
ممنون بابت پاسخ کامل اما اینجا چون شما دیتاگرید رو بصورت تلریک در نظر گرفتید اررور میده چیکارش کنم؟

فکر کنم فقط به جای GridViewRowInfo از DataGridViewRow بایستی استفاده کنید، بقیش مشترکه...