PDA

View Full Version : رویداد های هر ستون از datagrid view



ali_mnkt
شنبه 17 اسفند 1387, 23:56 عصر
با سلام خدمت دوستان

من قبلا هم موضوع ای با نام رویداد سلول های DATAGRID VIEW قرار داده بودم که می خواستم

مثلا سلول های datagrid view رو فقط عددی ویا فقط حروفی ویا سلولی که بشه اعداد رو

3 رقم 3 رقم جدا کرد. مشگل من هم تا حدودی حل شد.

مثلا برای 3رقم 3رقم جدا کردن کد زیر پیشنهاد شد:

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (e.Control is TextBox) {
TextBox tb = e.Control as TextBox;
tb.TextChanged += text_chang;
}

}
//makhsose 3ragham 3ragham kardan
private void text_chang(object sender, EventArgs e)
{
try {
Globalization.NumberFormatInfo nfi = new Globalization.NumberFormatInfo();
sender.Text = long.Parse(sender.Text, Globalization.NumberStyles.Number).ToString("n0", nfi);
sender.Select(sender.Text.Length, 0);
}
catch {
sender.Text = "";
}


اما وقتی که رویداد Editing control showing مربوط به datagrid view اجرا می شه تاثیرش

روی تمام سلول ها اعمال می شه . حالا چطور می شه طوری این کد رو نوشت

که بشه رویداد مخصوص هر ستون رو به صورت تکی تغییر داد مثلا یه ستون فقط عدد بشه

وارد کرد یه ستون فقط حروف و یه ستون فقط 3رقم 3رقم اعداد رو جدا کنه.

rnm123
یک شنبه 18 اسفند 1387, 23:08 عصر
دوست عزیز چرا این تنظیمات را در هنگام طراحی انجام نمیدی ؟ در هنگام طراحی میتونی نوع داده هر ستون ( عددی - حرفی - تاریخ - پول و ...) را مشخص کرده و فرمتهای مختلفی را روی آن اعمال کنی مثلا میتونی یک ستون را از نوع تاریخ تعریف کنی و فرمت آنرا فقط ساعت مشخص کنی حالا اگر به این ستون با کد یا هر حالت دیگر یک تاریخ کامل را بدهی فقط قسمت ساعت آن در ستون موردنظر قرار داده میشود

ali_mnkt
دوشنبه 19 اسفند 1387, 00:24 صبح
من از قسمت coulmns + defultcellstyle تغییراتی رو اعمال کردم (مثلا روی numeric قرار دادم)

اما تغییری حاصل نشد یعنی روی اون سلولی که این خاصیت رو تنظیم کرده بودم باز تونستم

حروف هم وارد کنم . آیا از قسمت دیگه ای باید تنظیم شه ؟

ali_mnkt
دوشنبه 19 اسفند 1387, 00:30 صبح
من از قسمت coulmns + defultcellstyle تغییراتی رو اعمال کردم (مثلا روی numeric قرار دادم)

اما تغییری حاصل نشد یعنی روی اون سلولی که این خاصیت رو تنظیم کرده بودم باز تونستم

حروف هم وارد کنم . آیا از قسمت دیگه ای باید تنظیم شه ؟

ali_mnkt
دوشنبه 19 اسفند 1387, 20:45 عصر
دوست عزیز چرا این تنظیمات را در هنگام طراحی انجام نمیدی ؟ در هنگام طراحی میتونی نوع داده هر ستون ( عددی - حرفی - تاریخ - پول و ...) را مشخص کرده و فرمتهای مختلفی را روی آن اعمال کنی مثلا میتونی یک ستون را از نوع تاریخ تعریف کنی و فرمت آنرا فقط ساعت مشخص کنی حالا اگر به این ستون با کد یا هر حالت دیگر یک تاریخ کامل را بدهی فقط قسمت ساعت آن در ستون موردنظر قرار داده میشود


دوست عزیز از روش بالا که گفتم رفتم ولی نتیجه نگرفتم :ناراحت: یکم بیشتر راهنمایی کن .

rnm123
سه شنبه 20 اسفند 1387, 23:39 عصر
دوست عزیز روشی که من گفتم فقط برای ورود اطلاعات با کد بود نه توسط کاربر . برا ی این کار شما باید خودتان مقادیر ورودی را چک کنید یعنی datagrid view این امکان را ندارد و اصلا کنترلی بر روی مقادیر ورودی در حین اجرا ندارد. شما میتوانید برای رویداد CellLeave کد بنویسید و یا یک کد کلی برای بررسی کلی اطلاعات وارد شده در آخر کار و بعد از زدن کلید خاصی ( مثلا کلید ثبت) بنویسید

adibadm
چهارشنبه 21 اسفند 1387, 01:38 صبح
دوست عزیزبرای 3رقم 3رقم جدا کردن کد زیر را پیشنهاد می کنم

grid.Columns[i].DefaultCellStyle.Format = "#,###";