PDA

View Full Version : محدودیت برای یک column برای گرید ویو



saeedhushmand
چهارشنبه 08 شهریور 1391, 13:00 عصر
دوستان کدهای زیادی پیدا کردم اما این کدها اگر محدودیت رعایت نمی شد Handle false یا true نمی شد فقط باعث می شد اگر شرط برقرار نباشه کاربر نتونه فرم ببنده و هنگام بسته شدن فرم پیغام نمایش داده می شد
من یک چیزی می خوام مثل کدی که در keypress می نویسند برای textbox
می خوام column 1در گرید فقط در آن عدد وارد بشه ، کاربر نتونه در در اون حروف وارد کنه

tooraj_azizi_1035
چهارشنبه 08 شهریور 1391, 13:45 عصر
باید عملیات Validation رو انجام بدی: http://www.farsimsdn.somee.com/default.aspx?id=108

saeedhushmand
چهارشنبه 08 شهریور 1391, 14:06 عصر
دوست عزیز ممنون اما من می خوام اجازه وارد کردن حروف نده نه این که حروف وارد می شه هنگام خروج از فرم اجازه خروج نمی ده...

vof.ir
چهارشنبه 08 شهریور 1391, 14:52 عصر
سلام.
انصافا یک بار دیگر توضیح بدهید بدانیم مشکل چیست/؟

saeedhushmand
چهارشنبه 08 شهریور 1391, 15:04 عصر
وقتی کد زیر رو به keypress تکست باکس اضافه می کنم هنگام وارد کردن مقدار در textbox اگر شرط برفرار بود متن وارد تکست باکس می شه اما اگر شرط برقرار نبود متن وارد تکست باکس نمی شه

if (!(char.IsDigit(e.KeyChar) || char.IsControl(e.KeyChar)))
{
e.Handled = true;
}


اما کدی زیر که من در رویداد
CellValidating

دیتا گریو ویو اضافه می کنم اجازه وارد کردن هر مقداری در column مورد نظر به کاربر می ده و هنگام خارج شدن از فرم درست وارد شدن متن رو چک می کنه که اگر مخالف شرط بود اجازه خروج از فرم به کاربر نمی ده

if (e.ColumnIndex == dgvArtiklSanad.Columns["CodeHesab"].Index)
{
int i;
if (!int.TryParse(Convert.ToString(e.FormattedValue), out i))
{
e.Cancel = true;
MessageBox.Show("must be numeric");
}
}


حالا من یک چیزی می خوام مثل چیزی که در keypress تکست باکس ولی این کار برای یک ستون دیتاگریدویو انجام بشه یعنی اگر مقدار وارد شده در ستون مخالف شرط بود یعنی عدد نبود در فیلد دیتاگرید وارد نشه اگر عدد بود وارد بشه

امیدوارم دوست عزیز منظورم رو فهمیده باشی...

saeedhushmand
چهارشنبه 08 شهریور 1391, 15:20 عصر
جواب پیدا کردم باید یک keypress به دیتاگرید ویو ربط بدیم با این کار در ستون مربوط فقط می شه عدد وارد کردو حروف وارد نمی شه

private void dgvArtiklSanad_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
TextBox text = e.Control as TextBox;
if (dgvArtiklSanad.CurrentCell.ColumnIndex == dgvArtiklSanad.Columns["CodeHesab"].Index)
{
if (text != null)
text.KeyPress += new KeyPressEventHandler(dgvArtiklSanadOnlyNumber_KeyP ress);
}
else
if (text != null)
text.KeyPress -= new KeyPressEventHandler(dgvArtiklSanadOnlyNumber_KeyP ress);
}
private void dgvArtiklSanadOnlyNumber_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsNumber(e.KeyChar) && !char.IsControl(e.KeyChar))
e.Handled = true;
}