PDA

View Full Version : سوال: سه رقم سه رقم جداکردن اعداد در gridview همزمان با تایپ کردن



fatima...68
پنج شنبه 17 اسفند 1391, 12:59 عصر
سلام به دوستان عزیز
من میخوام در بعضی از ستونهای گریدم همزمان با تایپ کردن اعداد سه رقم سه رقم جدا بشن و این خیلی برام مهمه که حتما همزمان با تایپ کردن این اتفاق بیوفته هر راهی میرم به بن بست میخورم لطفا کمکم کنید مشکلمو حل کنم مرسی از شما

Fastdesign
پنج شنبه 17 اسفند 1391, 16:17 عصر
همه ما این مشکل رو داریم.

دوستان کسی نیست در این زمینه کار کرده باشه ما رو راهنمایی کنه؟

khokhan
پنج شنبه 17 اسفند 1391, 19:25 عصر
با سلام

توی هر ستون ازدیتا گرید عددی با طول بیش از3 کاراکتر تایپ کنید و ایتر رو بزنید:لبخند:

fatima...68
شنبه 19 اسفند 1391, 12:16 عصر
تشکر از پاسخت دوست عزیز ولی این کد بعد از رفتن به سطر بعد حدا میکنه من خیلی واسم مهمه که حتما هنگامی که داده داره وارد میشه همزمان جدا شه

fatima...68
شنبه 19 اسفند 1391, 12:19 عصر
سلام دوست عزیز برای اینکار باید خودمون گرید رو custom کنیم و واسش رویداد بسازیم که کاراکتر به کاراکتر بشماره و جدا کنه اول باید اعداد رو بشماره بعد کاما بزاره ولی من نمیدونم چطور واسش کد بنویسم

Miss_samira
شنبه 19 اسفند 1391, 23:02 عصر
سلام دوست عزیز، من تو یکی از پروژه های خودم واسه textbox از کد زیر در رویداد key-press اسفاده کردم امیدوارم به کارت بیاد:

private void txt_num_KeyPress(object sender, KeyPressEventArgs e)
{
if (txt_num.Text.Length >= 3) // commas should appear only if there are more than 3 digits
{
// remove first comma
string textToFormat = (txt_num_silandr.Text + e.KeyChar).Replace(",", "");
string formattedText = "";
// Put a comma after every 3 digits
for (int index = textToFormat.Length - 1, counter = 1; index >= 0; index--, counter++)
{
formattedText += textToFormat[index];
if (counter % 3 == 0 && index > 0)
formattedText += ",";
}
e.Handled = true;
txt_num.Text = "";
// Reverse the number to display properly
for (int index = formattedText.Length - 1; index >= 0; index--)
{
txt_num.Text += formattedText[index];
}
formattedText = "";
// Put cursor at the end of the text
txt_num.Select(txt_num.Text.Length, 0);
}
}

linux
شنبه 19 اسفند 1391, 23:06 عصر
سلام به دوستان عزیز
من میخوام در بعضی از ستونهای گریدم همزمان با تایپ کردن اعداد سه رقم سه رقم جدا بشن و این خیلی برام مهمه که حتما همزمان با تایپ کردن این اتفاق بیوفته هر راهی میرم به بن بست میخورم لطفا کمکم کنید مشکلمو حل کنم مرسی از شما
بهتر هست از دیتاگرید فقط برای نمایش استفاده کنید

khokhan
شنبه 19 اسفند 1391, 23:22 عصر
سلام دوست عزیز، من تو یکی از پروژه های خودم واسه textbox از کد زیر در رویداد key-press اسفاده کردم امیدوارم به کارت بیاد:

private void txt_num_KeyPress(object sender, KeyPressEventArgs e)
{
if (txt_num.Text.Length >= 3) // commas should appear only if there are more than 3 digits
{
// remove first comma
string textToFormat = (txt_num_silandr.Text + e.KeyChar).Replace(",", "");
string formattedText = "";
// Put a comma after every 3 digits
for (int index = textToFormat.Length - 1, counter = 1; index >= 0; index--, counter++)
{
formattedText += textToFormat[index];
if (counter % 3 == 0 && index > 0)
formattedText += ",";
}
e.Handled = true;
txt_num.Text = "";
// Reverse the number to display properly
for (int index = formattedText.Length - 1; index >= 0; index--)
{
txt_num.Text += formattedText[index];
}
formattedText = "";
// Put cursor at the end of the text
txt_num.Select(txt_num.Text.Length, 0);
}
}


سلام

بفرما این هم dllهمون تکس باکس :لبخند:

shadi khanum
یک شنبه 20 اسفند 1391, 08:55 صبح
میتونی از این کد استفاده کنی. من خودم تو پروژه فعلیم دارم زش استفاده میکنم.. منتها برای گرید جانوس و با VB. خودت با کمی تغییرات میتونی واسه گرید ویندوز هم درستش کنی. اگه خواستی ب
و C# رو هم بذارم.
توی متد CellValueChanged بنویس

If IsDBNullValue(MyGrdEX.GetValue(e.Column.Key), "") <> "" AndAlso MyGrdEX.GetValue(e.Column.Key) <> "" Then
Try
If MyGrdEX.GetValue(e.Column).ToString.Contains(".") Then
MyGrdEX.CurrentRow.Cells(e.Column.Key).Value = MyGrdEX.GetValue(e.Column).ToString.Replace(".", "")
End If
Catch ex As Exception
End Try

If IsDBNullValue(MyGrdEX.GetValue(e.Column.Key), "") <> "" AndAlso MyGrdEX.GetValue(e.Column.Key) <> "" Then
MyGrdEX.CurrentRow.Cells(e.Column.Key).Value = String.Format("{0:#,#}", Convert.ToDecimal(MyGrdEX.GetValue(e.Column)))
MyGrdEX.EditTextBox.SelectionStart = MyGrdEX.EditTextBox.Text.Length
End If


End If

hossein_sh2008
یک شنبه 20 اسفند 1391, 22:30 عصر
با سلام

توی هر ستون ازدیتا گرید عددی با طول بیش از3 کاراکتر تایپ کنید و ایتر رو بزنید:لبخند:

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


البته یه راه غیر اصولیش اینه که توی ترای کش کد بنویسیم

مثل زیر:



try
{

{
int x = Convert.ToInt32(e.Value);
e.Value = x.ToString("###,###", CultureInfo.InvariantCulture);
}
e.FormattingApplied = true;
}
catch
{
}

hossein_sh2008
سه شنبه 22 اسفند 1391, 22:27 عصر
راستی ما اگر یه گرید داشته باشیم شامل
کد نوع داده عددی
تاریخ نوع داده عددی
شرح نوع داده رشته ای
مبلغ نوع داده عددی
حالا بخوایم فقط مبلغ سه رقم سه رقم جدا بشه باید چی کار کنیم:گیج: