PDA

View Full Version : سوال: درخواست کمک در کد نویسی



darkprince
یک شنبه 02 اسفند 1388, 01:50 صبح
با عرض سلام خدمت دوستان عزیز

1 - میخوام تو یک ستون از گرید ویو چک کنم اگه مقدارش مثلاَ 0 بود بجای 0 یه متن رو برام نشون بده چطور باید این کارو بکنم؟

2 – کد زیر چه ایرادی داره زمان اجرا خطای Input string was not in a correct format رو میده



;()lbl_aportion.Text=(int.Parse(txtPrice.Value.ToS tring())*(int.Parse(objReader["tprice"].ToString()))).ToString


فکر کنم لازم باشه عرض کنم از یه کامپوننت به نام moneytxtbox که یکی از دوستان تو فروم قرار داده بود استفاده کردم و txtprice.value دسیمال بر میگردونه

M.YasPro
یک شنبه 02 اسفند 1388, 07:20 صبح
سلام برای چک کردن داده میتونی همون وقت که داده رو از دیتابیس استخراج میکنی این کارو کنی نه توی دیتا گرید
ارور هم میگه که رشته نا معتبر ( خالی یا غیر عدد ... ) به تابع int.parse فرستاده شده

slashslash2009
یک شنبه 02 اسفند 1388, 11:55 صبح
اینجوری میتونی سطر وستونی که انتخاب کردی رو چک کنی در اینجا مقدارش ریخته شده در یک تکست باکس شما با if چکش کن

textBox1.Text = dataGridView1.CurrentRow.Cells[8].Value.ToString();

Warrior
یک شنبه 02 اسفند 1388, 14:53 عصر
سلام دوستان, من هم می خواهم کار شماره 1 صاحب تاپیک را انجام دهم و جدول را ریخته ام داخل یک DataTable به نام DT و حالا می خواهم در صورتی که ستون شماره 7(در واقع داخل جدولم شماره 7 همان فیلدی است که می خواهم) با نام "Jensiat" عدد 1 را برگردادند داخل dataGridview "مرد" و اگر 0 را برگرداند "زن" نوشته شود.

حالا دقیق نمی دانم چه کار کنم.
لطفا راهنمایی کنید.

این هم کد:


if (Int32.Parse(DT.Columns[7]["Genre"].ToString()) == 1)
{
حالا اینجا چه بنویسم؟
}

M.YasPro
یک شنبه 02 اسفند 1388, 14:59 عصر
if (Int32.Parse(DT.Columns[7]["Genre"].ToString()) == 1)
{
DT.Columns[7]["Genre"].value="مرد"
}

Warrior
یک شنبه 02 اسفند 1388, 15:25 عصر
این ارور ها را داد:

Cannot apply indexing with [] to an expression of type 'System.Data.DataColumn'
'System.Data.DataColumn.this[int]' is inaccessible due to its protection level
چه کنم؟ :گیج:

M.YasPro
یک شنبه 02 اسفند 1388, 15:31 عصر
البته اگه فیلد از نوع رشته باشه

slashslash2009
یک شنبه 02 اسفند 1388, 16:15 عصر
ازین کد هم میتونی استفاده کنی


if (dt1.Rows[0][1].ToString() == "asa")
{
}
اولین عدد شماره سطره ودومی شماره ستون

علیرضا حسن زاده
یک شنبه 02 اسفند 1388, 17:20 عصر
سلام دوستان, من هم می خواهم کار شماره 1 صاحب تاپیک را انجام دهم و جدول را ریخته ام داخل یک DataTable به نام DT و حالا می خواهم در صورتی که ستون شماره 7(در واقع داخل جدولم شماره 7 همان فیلدی است که می خواهم) با نام "Jensiat" عدد 1 را برگردادند داخل dataGridview "مرد" و اگر 0 را برگرداند "زن" نوشته شود.

حالا دقیق نمی دانم چه کار کنم.
لطفا راهنمایی کنید.

این هم کد:


if (Int32.Parse(DT.Columns[7]["Genre"].ToString()) == 1)
{
حالا اینجا چه بنویسم؟
}
می تونی خیلی راحت از دستور CASE تو دستور SELECT پایگاه دادت استفاده کنی اگه مقدار 0 بود مرد و اگه 1 بود برای اون ستون مقدار زن قرار بده این جوری خیلی راحت تر می تونی کار کنی و نیازی هم به برنامه نویسی اضافی نداری:

Select c1,c2,c3, Case jensiat
When 0 then 'مرد'
when 1 then 'زن'
end as jens_column
From Mytable
------------------------------------------
همیشه راه های زیادی وجود داره:بوس:

Warrior
یک شنبه 02 اسفند 1388, 20:59 عصر
ممنونم,

ولی آن c1 و c2 و c3 چی هستند؟

من در ابتدا قصد داشتم نوع داده ی این فیلد را در SQL از نوع bool انتخاب کنم ولی گویا نمی شود این داده را انتخاب کرد و من integer را انتخاب کردم(پروژه آزمایشی است و می توانم هر تغییری بخواهم داخلش بدهم) ولی اینطوری که شما گفتید برایم بهتر است.
راستی, من کلی از جاهای برنامه از این 0 و 1 ها داخل قسمت هایی مانند جستجو و ... استفاده کرده ام و اگر بشود یک راه دیگر هم بگویید که بتوانم موقع خواندن اطلاعات فقط داخل dataGridView "زن" و "مرد" نمایش داده شود هم خوب است.

ممنونم

s.Jabbari
یک شنبه 02 اسفند 1388, 21:19 عصر
اونا اسم فیلد هستند





Select filde1,filde2,filde3 Case filde4
when..... then..........
when....... then ......
end as filde4
From Mytable

darkprince
دوشنبه 03 اسفند 1388, 01:09 صبح
دوستان من مواردی رو که ذکر کرده بودید رو امتحان کردم ولی متاسفانه جواب نگرفتم، یه مقدار بیشتر راجب کاری که میخوام بکنم توضیح میدم. من یه فرم جستجو دارم، تو فرم لود میام اطلاعات رو از پایگاه می گیرم و تو دیتا ست میریزم بعد با توجه به جستجوی انجام شده توسط dataview و rowfilter جستجو رو انجام میدم و تو دیتاگرید نشون میدم، تعداد سطرهایی که در جستجو پیدا می شوند مشخص نیست، من میخوام در دو ستون از این سطرها با توجه به عدد قرار گرفته در اون سلول یه رشته قرار بدم مثلا همین که دوستمون گفته بود بجای 0 به من مرد رو نشون بده با دستوراتی که ذکر کردید میشه مقدار رو مقایسه کرد ولی برای تغییر مقدار نشان داده شده باید چیکار کنم؟

علیرضا حسن زاده
دوشنبه 03 اسفند 1388, 08:46 صبح
دوستان من مواردی رو که ذکر کرده بودید رو امتحان کردم ولی متاسفانه جواب نگرفتم، یه مقدار بیشتر راجب کاری که میخوام بکنم توضیح میدم. من یه فرم جستجو دارم، تو فرم لود میام اطلاعات رو از پایگاه می گیرم و تو دیتا ست میریزم بعد با توجه به جستجوی انجام شده توسط dataview و rowfilter جستجو رو انجام میدم و تو دیتاگرید نشون میدم، تعداد سطرهایی که در جستجو پیدا می شوند مشخص نیست، من میخوام در دو ستون از این سطرها با توجه به عدد قرار گرفته در اون سلول یه رشته قرار بدم مثلا همین که دوستمون گفته بود بجای 0 به من مرد رو نشون بده با دستوراتی که ذکر کردید میشه مقدار رو مقایسه کرد ولی برای تغییر مقدار نشان داده شده باید چیکار کنم؟

دوست عزیز با اگه درست توجه کرده باشین فقط مقایسه نیست تو همون مقایسه واسه اون ستون مقدار هم قرار میده

علیرضا حسن زاده
دوشنبه 03 اسفند 1388, 08:56 صبح
ممنونم,

ولی آن c1 و c2 و c3 چی هستند؟

من در ابتدا قصد داشتم نوع داده ی این فیلد را در SQL از نوع bool انتخاب کنم ولی گویا نمی شود این داده را انتخاب کرد و من integer را انتخاب کردم(پروژه آزمایشی است و می توانم هر تغییری بخواهم داخلش بدهم) ولی اینطوری که شما گفتید برایم بهتر است.
راستی, من کلی از جاهای برنامه از این 0 و 1 ها داخل قسمت هایی مانند جستجو و ... استفاده کرده ام و اگر بشود یک راه دیگر هم بگویید که بتوانم موقع خواندن اطلاعات فقط داخل dataGridView "زن" و "مرد" نمایش داده شود هم خوب است.

ممنونم
دوست عزیز این عمل مقدار داده پایگاه داده رو عوض نمی کنه و هر جایی که دوست داشته باشین می تونین از 0و1 استفاده کنید من این کوئری رو برای نمایش تو DataGrid استفاده می کنم البته یه عیبی داره اونم اینه که اگه خواستی از این فیلدها که داده هاشون جایگزین شده تو جستجو استفاده کنی
c1 و c2 و c3 نام فیلدهای پایگاه داده هست که شما میتونی با فیلدهای پایگاه داده خودت جایگزین کنی
------------------------------
یه توصیه: برای برنامه نویسی اگه می خواین رو سیستم های اتوماسیون کار کنید یا بطور کلی با پایگاه داده اکیدا توصیه می کنم دستورات پایگاه داده ای رو که می خواین باهاش کار کنید رو یاد بگیرید
تجربه خودم: در اکثر موارد انتخاب داده ها با دستورات پایگاه داده سریع تر و با خطاهای کمتری در زمان اجرا نسبت به دستوران زبان برنامه نویسی اجرا می شن دلیلش هم اینه که تو زبان برنامه نویسی شما الگوریتم رو مشخص می کنید و به برنامه میگید یه کاری رو چطوری انجام بده ولی تو زبان SQL به زبان می گید که چی می خوای و با نحوه انجام اون کاری نداری به همین جهت بهتره:لبخند::بوس:

darkprince
دوشنبه 03 اسفند 1388, 18:36 عصر
دوست عزیز با اگه درست توجه کرده باشین فقط مقایسه نیست تو همون مقایسه واسه اون ستون مقدار هم قرار میده
سلام تو پست قبلی عرض کردم تمام مواردی که دوستان ذکر کرده بودند رو تست کردم ولی همه با ارور مواجه می شوند

SMRAH1
دوشنبه 03 اسفند 1388, 20:12 عصر
سلام
نمی دونم چرا دوستان مسئله به این سادگی رو اینقدر پیچیده می کنند.در DataGridView ،رویدادی داریم به نام CellFormatting که در هنگام نمایش سلول فراخوانی شده و بر اساس مقدار آن می توان فرمت مد نظر (style یا حتی Value جدید) رو تخصیص داد.توجه کنید که اگر Value رو عوض کردید،به این معنی نیست که Value خوده Cell عوض شده،فقط به این معنی است که به جای مقدار اصلی،مقدار مد نظر شما رو نشون بده.برنامه پیوست هم طریقه استفاده رو نشون می ده.

http://barnamenevis.org/forum/attachment.php?attachmentid=44520&stc=1&d=1266858157

در ضمن دوستی که فیلدی داشتن که 0 و 1 بوده که نمایش جنسیت مرد و زن بود.شما کافیه،نوع ستون رو (در هنگام Add Column) به شکل ComboBox انتخاب کنید و بعد تنظیمات مربوطه (لیست عناوین ComboBOx به علاوه DataSource و DataDisplay و DataValue ) رو به شکل مناسب تنظیم کنید تا همه چیز درست دیده شود.در ضمن می تونید از همون CellFormatiing نیز هم استفاده کنید (در برنامه پیوست از CellFormatiing استفاده شده است).

موفق باشید

darkprince
دوشنبه 10 اسفند 1388, 02:21 صبح
سلام دوستان حالا من به یه مشکل جدید برخورد کردم، با توجه به کمکی که شما در حل مشکل من کردید ممنون میشم اگه در حل این مشکل هم راهنمائیم کنید. میخواستم در گرید ویو و خاصیت Cellformating مقدار یه ستون رو براساس مقدار یه ستون دیگه و خود اون ستون تغییر بدم یه چیزی مثل این:

if (e.ColumnIndex == 2
}


if (int.Parse(e.Value.ToString()) == 0)


}

e.value="مسکونی"=;



if (e.ColumnIndex == 3)


}
if (int.Parse(e.Value.ToString()) == 0)


e.Value = "آپارتمانی";


else


if (int.Parse(e.Value.ToString()) == 1)


e.Value = "ویلایی";


{
{
else


if (int.Parse(e.Value.ToString()) == 1)


e.Value = "تجاری";


..................


{


ولی متاسفانه اینی که من نوشتم جواب نمیده.