PDA

View Full Version : اضافه کردن مقادیر به datagridview



itman.jam
سه شنبه 07 بهمن 1393, 23:09 عصر
سلام دوستان من خیلی دنبال این راه حل گشتم وتونستم یکی دوخط کد براش بنویسم ولی کامل و بدرد بخور نشد .

بطور خلاصه من میخوام یه فاکتور فروش ایجاد کنم . 10 باتن دارم هرکدوم نام یک محصول را به دیتاگرید میفرسته و 10 باتن دیگه که از 0 تا عدد 9 را به ستون دوم گرید میفرسته (برای تعداد محصول)

در کدی که نوشتم اضافه کردن محصول به ستون اول انجام میشه ولی برای ورود تعداد مشکل دارم مثلا میخوام 123 را بعنوان تعداد وارد کنم
کد برای وارد کردم نام محصول در ستون 1

dg1.Rows.Add("name");h

کد هر دکمه برای وارد کردن تعداد :
if (row == 0)
{
dg1.Rows[0].Cells[1].Value = "1";
}
else
{
i = i + 1;
dg1.Rows[i].Cells[1].Value =dg1.Rows[i].Cells[1].Value + "1";

}

mam_65
چهارشنبه 08 بهمن 1393, 09:47 صبح
سلام دوستان من خیلی دنبال این راه حل گشتم وتونستم یکی دوخط کد براش بنویسم ولی کامل و بدرد بخور نشد .

بطور خلاصه من میخوام یه فاکتور فروش ایجاد کنم . 10 باتن دارم هرکدوم نام یک محصول را به دیتاگرید میفرسته و 10 باتن دیگه که از 0 تا عدد 9 را به ستون دوم گرید میفرسته (برای تعداد محصول)

در کدی که نوشتم اضافه کردن محصول به ستون اول انجام میشه ولی برای ورود تعداد مشکل دارم مثلا میخوام 123 را بعنوان تعداد وارد کنم
کد برای وارد کردم نام محصول در ستون 1

dg1.Rows.Add("name");h

کد هر دکمه برای وارد کردن تعداد :
if (row == 0)
{
dg1.Rows[0].Cells[1].Value = "1";
}
else
{
i = i + 1;
dg1.Rows[i].Cells[1].Value =dg1.Rows[i].Cells[1].Value + "1";

}
یکم بیشتر توضیح بده

itman.jam
چهارشنبه 08 بهمن 1393, 11:21 صبح
سلام . ممنون حلش کردم !

الان یه سوال دیگه درصورتی که دونفر همزمان در حال صدور فاکتور هستند و ما میخواهیم فاکتورها یا فیش های ما (علاوه بر اینکه یه آیدی منحصر بفرد دارن ) دارای یک شماره باشن برای نوبت ! که مثلا از 100 شروع بشن باید چکار کنیم ؟
در حالت تک کاربره برنامه سادست ولی الان که دو کاربره هست و ممکنه همزمان دونفر در حال صدور فیش باشن برنامه چطور بفهمه که باید چه عددی را به کدوم یک از کاربران بده که تکراری هم نباشه .

omidrayaneh.68
چهارشنبه 08 بهمن 1393, 12:43 عصر
try
{
if (ds.Tables["t22"].Rows.Count > 0)
{
txt_shomare_sabt_factor.Text = Convert.ToString(dfalse.CurrentRow.Cells["id"].Value);
txt_shomare_sabt_factor.Text = Convert.ToString((Convert.ToInt32(txt_shomare_sabt _factor.Text) + 1));

}
}
catch
{
txt_shomare_sabt_factor.Text = "100";
}
همان طور که در کد بالا مشاهده میکنید برای این که بتوانیم بزرگترین مقدار یک عدد در فیلدی را انتخاب کنیم از دستور MAX استفاده میکنیم برای این کار نیاز به یک Datagridview جدید داریم که نام آن در این فرم dfalse گذاشته ایم زیرا با Datagridview اصلی که برای نمایش اطلاعات کل فروش میباشد درگیر نشودهم چنیم با استفاده از شرطی مشخص میکنیم که اگر داده ای در فیلد شماره فاکتور از جدول فروش وجود داشت با تبدیل کردن فید آن به مقدار رشته ای آن را درون یک Lable نمایش دهد و در خط بعدی یک واحد به مقدار آن اضافه نماید و در صورتی که فیلد Sn_factor کاملا خالی بود مقدار پیش فرض آن را با استفاده از Try,Catch برابر با 100 قرار دهد،توجه داشته باشید Try,Catch در مواقعی به کار میرود که شما با نوع خطای برنامه آشنا باشید و برنامه را وادار به اجرای دستورات کنید.
بنده از این روش در یکی از برنامه هام استفاده کردم

itman.jam
چهارشنبه 08 بهمن 1393, 13:55 عصر
try
{
if (ds.Tables["t22"].Rows.Count > 0)
{
txt_shomare_sabt_factor.Text = Convert.ToString(dfalse.CurrentRow.Cells["id"].Value);
txt_shomare_sabt_factor.Text = Convert.ToString((Convert.ToInt32(txt_shomare_sabt _factor.Text) + 1));

}
}
catch
{
txt_shomare_sabt_factor.Text = "100";
}
همان طور که در کد بالا مشاهده میکنید برای این که بتوانیم بزرگترین مقدار یک عدد در فیلدی را انتخاب کنیم از دستور MAX استفاده میکنیم برای این کار نیاز به یک Datagridview جدید داریم که نام آن در این فرم dfalse گذاشته ایم زیرا با Datagridview اصلی که برای نمایش اطلاعات کل فروش میباشد درگیر نشودهم چنیم با استفاده از شرطی مشخص میکنیم که اگر داده ای در فیلد شماره فاکتور از جدول فروش وجود داشت با تبدیل کردن فید آن به مقدار رشته ای آن را درون یک Lable نمایش دهد و در خط بعدی یک واحد به مقدار آن اضافه نماید و در صورتی که فیلد Sn_factor کاملا خالی بود مقدار پیش فرض آن را با استفاده از Try,Catch برابر با 100 قرار دهد،توجه داشته باشید Try,Catch در مواقعی به کار میرود که شما با نوع خطای برنامه آشنا باشید و برنامه را وادار به اجرای دستورات کنید.
بنده از این روش در یکی از برنامه هام استفاده کردم

اگه درست متوجه شده باشم شما منظورتون اینه که شماره فیش های قبلی را درون یک جدول جدید بریزیم و از اخرین شماره اون استفاده کنیم ! ولی باز هم مشکل باقیه . چرا ؟ چون که بعنوان مثال کاربر شماره یک در این لحظه با این روش آخرین فیلد را از جدول dfalse میخونه مثلا شماره 105 و یکی میلی ثانیه بعد کاربر شماره 2 هم همینو میخونه و برنامه به هر دو شماره 106 را برای فاکتورشون اختصتص میده !!