مقداردهی دستی یک ستون از datagridview با فرمت مشخص
باسلام
من تو برنامه ای که نوشتم یک گرید ویو دارم که توسط اطلاعات موجود در دیتا بیس پر میشه. میخوام علاوه بر طلاعات دیتابیس یک ستون به انتهای گرید اضافه کنم که محتویات یکی از ستونهای موجود رو با فرمت مشخص در اون نمایش بدم
برای مثال اگر ستون 0 از گرید عدد 1 رو نمایش میده ستون آخر همین عدد رو به شکل 000001 نمایش بده.
راه حلش چیه ؟؟
کد من برای پر کردن دیتا گرید ویو::
SqlConnection con = new SqlConnection(ConnectionString);
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = Query Text ;
SqlDataAdapter da = new SqlDataAdapter(cmd.CommandText, con);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
نقل قول: مقدار دهی دستی یک ستون از datagridview با فرمت مشخص
با سلام
بهتره از تابع Right خود Sql Server استفاده کنید و اصطلاحاً یک Virtual Field بسازید
SELECT
ID,
FirstName,
LastName,
Code,
RIGHT('00000'+CAST([Code] AS VARCHAR(6)),6) AS 'NewCodeColumn'
FROM
Persons
نقل قول: مقدار دهی دستی یک ستون از datagridview با فرمت مشخص
و یک راه دیگه به صورت کلاس نویسی تو سی شارپ بنویسی و دیتاتیبل رو به صورتی که خودت میخای ایجاد کنی از اون کلاست یعنی ارایه ای از شی برگردونی و اون شی ها رو به دیتاتیبل تبدیل کنی
نقل قول: مقدار دهی دستی یک ستون از datagridview با فرمت مشخص
نقل قول:
نوشته شده توسط
danialafshari
با سلام
بهتره از تابع Right خود Sql Server استفاده کنید و اصطلاحاً یک Virtual Field بسازید
SELECT
ID,
FirstName,
LastName,
Code,
RIGHT('00000'+CAST([Code] AS VARCHAR(6)),6) AS 'NewCodeColumn'
FROM
Persons
ممنون از کمکتون ولی راهی که فرمودید فقط تا زمانی جوابگو هست که عدد مربوطه یک رقمی باشه که با اضافه کردن 5 عدد صفر به قبل از آن مشکل حل میشه ولی وقتی اعداد دو یا سه رقمی شد فرمت بهم خواهد ریخت.
1 ضمیمه
نقل قول: مقدار دهی دستی یک ستون از datagridview با فرمت مشخص
سلام.
اگر منظور شمارو درست متوجه شده باشم و بخواید نتیجه ای مثل این عکس داشته باشید:
ضمیمه 149083
باید DefaultCellStyle رو در Column مورد نظر به صورت زیر تغییر بدید
dataGridView1.Columns[3].DefaultCellStyle.Format = "0000";
و در خاظیت RowAdded این خط کد رو بزنید. (این کد با توجه به نیاز شما میتونه تغییر کنه
dataGridView1.Rows[e.RowIndex].Cells[3].Value = dataGridView1.Rows[e.RowIndex].Cells[0].Value;
نقل قول: مقدار دهی دستی یک ستون از datagridview با فرمت مشخص
نقل قول:
نوشته شده توسط
mehdiyahyavi
سلام.
اگر منظور شمارو درست متوجه شده باشم و بخواید نتیجه ای مثل این عکس داشته باشید:
ضمیمه 149083
باید DefaultCellStyle رو در Column مورد نظر به صورت زیر تغییر بدید
dataGridView1.Columns[3].DefaultCellStyle.Format = "0000";
و در خاظیت RowAdded این خط کد رو بزنید. (این کد با توجه به نیاز شما میتونه تغییر کنه
dataGridView1.Rows[e.RowIndex].Cells[3].Value = dataGridView1.Rows[e.RowIndex].Cells[0].Value;
ممنون از پاسختون فکر میکنم راه حل همین باشه که فرمودید. ولی الان دو تا مشکل هست .اول اینکه کدی که در قسمت خاصیت RowAdded اضافه کردم فقط برای دو خط اول از گریدم اجرا میشه و در بقیه خطوط اجرا نمیشه
و مشکل بعدی اینه که من تنظیم فرمت Column رو بلافاصله بعد از تنظیم DataSource برای دیتا گرید قرار دادم که متاسفانه کار نمیکنه.
cmd.CommandText = SS;
SqlDataAdapter da = new SqlDataAdapter(cmd.CommandText, con);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
dataGridView1.Columns[8].DefaultCellStyle.Format = "000000";
نقل قول: مقداردهی دستی یک ستون از datagridview با فرمت مشخص
سلام.
تنظیم فرمت ستون رو بعد از InitializeComponent باید انجام بدید.
و اینکه وقتی شما می خواهید همچین عملیاتی رو روی ستون 9 که ایندکس 8 میشه انجام بدید، نباید اون رو با دیتایی که از دیتابیس میگیرید پر کنید.
اینکه در بقیه خطوط اجرا نمیشه، خطا میده یا null و یا چیز دیگه ؟
برای فهمیدن بهتره از Break Point روی همون خط ببینید چه اتفاقی می افته
نقل قول: مقداردهی دستی یک ستون از datagridview با فرمت مشخص
نقل قول:
نوشته شده توسط
mehdiyahyavi
سلام.
تنظیم فرمت ستون رو بعد از InitializeComponent باید انجام بدید.
و اینکه وقتی شما می خواهید همچین عملیاتی رو روی ستون 9 که ایندکس 8 میشه انجام بدید، نباید اون رو با دیتایی که از دیتابیس میگیرید پر کنید.
اینکه در بقیه خطوط اجرا نمیشه، خطا میده یا null و یا چیز دیگه ؟
برای فهمیدن بهتره از Break Point روی همون خط ببینید چه اتفاقی می افته
Break Point رو روی همون خط کد نوشته شده در RowAdded قرار دادم . تو دو خط اول اجرا شد و بعد از اون وارد اون کد نشد. هیچ پیغام خطایی هم نمیده.
در مورد پر نکردن یک ستون از دیتا بیس هم وقتی DataSource در دیتا گرید ویو مقدار دهی میکنیم دیگه اجازه تغییرات و اضافه کردن ستون رو نداریم.