PDA

View Full Version : تولید شماره ردیف در دیتاگرید ویو



mahnaz20
سه شنبه 01 تیر 1389, 14:24 عصر
سلام



من توی دیتا گرید ویو یه ستون به نام ردیف دارم که قراره وقتی فرم لود میشه ، به ازای نام هر فردی که در دیتاگرید ویو میاد ، شماره ردیف داشته باشه(و مقدار این ستون از بانک نمیاد)(من میخوام بوسیله سی شارپ شماره های ردیف رو تولید کنم )



مثلا اولین نفر ، ردیف شماره 1 باشه ، دومی ردیف شماره 2 و ....



کسی میدونه چطوری ؟

ricky22
سه شنبه 01 تیر 1389, 14:41 عصر
سلام به دیتاتیبل یک ستون دستی اضاف کنید و مقدار دهی کنید با یک حلقه.

asefy2008
سه شنبه 01 تیر 1389, 14:57 عصر
سلام این (http://barnamenevis.org/forum/showthread.php?t=169830) رو ببین.
البته شما که نمی خوای از دیتابیس استفاده کنی مشکل داخل اون تاپیک برات پیش نمیاد. همچین اگر شماره هر سطر رو در rowheader قرار بدی بهتر هست

RIG000
سه شنبه 01 تیر 1389, 14:59 عصر
اگه بخای خودت تولید کنی باید همین که ریکی گفت رو انجام بدی وگرنه میتونی تو بانکت ردیف رو datatypesh رو autonumber کنی و بعد وقتی برنامه رو اجرا کردی یکی یکی اضافه میشه به ردیفت اما اگه بخای پاکنی مثلا ردیف 3 رو دیگه دفعه بعد برنامه رو اجرا کردی دیگه بعد از ردیف 2 ردیف 4 هست و 3 دیگه نداری .

Iran58
سه شنبه 01 تیر 1389, 15:30 عصر
سلام
تو CellFormatting گریدت این رو بنویس

dataGridView1.Rows[e.RowIndex].Cells[0].Value = e.RowIndex + 1;

mahnaz20
سه شنبه 01 تیر 1389, 20:13 عصر
تشکر بابت لطف دوستان



ببینین من دقیقا این کد رو به برنامم اضافه کردم



ولی هیچ کاری انجام نداد

اشکال کارم کجاست ؟

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
dataGridView1.Rows[e.RowIndex].Cells[0].Value = e.RowIndex + 1 ;
{

s.khoshfekran
سه شنبه 01 تیر 1389, 21:11 عصر
یه ستون اضافه کن و خاصیت AutoIncreament رو برابر True قرار بده!
http://www.c-sharpcorner.com/UploadFile/santowebster/AutonumberingDatatable12102008090717AM/AutonumberingDatatable.aspx

asefy2008
سه شنبه 01 تیر 1389, 22:19 عصر
private void DataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
DataGridView.Rows[e.RowIndex].HeaderCell.Value = (e.RowIndex + 1).ToString();
}

ostovarit
سه شنبه 01 تیر 1389, 22:40 عصر
سلام



من توی دیتا گرید ویو یه ستون به نام ردیف دارم که قراره وقتی فرم لود میشه ، به ازای نام هر فردی که در دیتاگرید ویو میاد ، شماره ردیف داشته باشه(و مقدار این ستون از بانک نمیاد)(من میخوام بوسیله سی شارپ شماره های ردیف رو تولید کنم )



مثلا اولین نفر ، ردیف شماره 1 باشه ، دومی ردیف شماره 2 و ....



کسی میدونه چطوری ؟



من سوال و مطالبی که دوستان گفتند رو خوندم

- اینکه ما یک ردیف به گرید اضافه کنیم فقط به خاطر شمارش سطر ها کار جالبی نیست!
- اینکه یک فیلد AutoNumber دیتابیس رو نمایش بدیم اصلا خوب نیست به فرض بخوای اطلاعات گرید رو فیلتر کنی اونوقت شمارهات به هم میریزه ...

راه حلی که من به نظرم درسته اینه که از Header هر سطر استفاده بشه و شماره در هدر نوشته بشه من کلاس زیر رو در پروژم مینویسم :



public void AutoNumberDataGridRows(DataGridView dgv)
{
int rowNumber = 1;
foreach (DataGridViewRow row in dgv.Rows)
{
if (row.IsNewRow) continue;
row.HeaderCell.Value = rowNumber.ToString();
rowNumber = rowNumber + 1;
}
}


و این کلاس رو در EVENT مورد نظرم صدا میزنم مثلا میتونید در زمان بایند اطلاعات به گرید شماره گزاری رو هم با کد زیر انجام بدید :



this.AutoNumberDataGridRows(dataGridViewSpesific1) ;


سوالی اگر بود در خدمتم ...

asefy2008
چهارشنبه 02 تیر 1389, 00:04 صبح
من سوال و مطالبی که دوستان گفتند رو خوندم

- اینکه ما یک ردیف به گرید اضافه کنیم فقط به خاطر شمارش سطر ها کار جالبی نیست!
- اینکه یک فیلد AutoNumber دیتابیس رو نمایش بدیم اصلا خوب نیست به فرض بخوای اطلاعات گرید رو فیلتر کنی اونوقت شمارهات به هم میریزه ...

راه حلی که من به نظرم درسته اینه که از Header هر سطر استفاده بشه و شماره در هدر نوشته بشه من کلاس زیر رو در پروژم مینویسم :



public void AutoNumberDataGridRows(DataGridView dgv)
{
int rowNumber = 1;
foreach (DataGridViewRow row in dgv.Rows)
{
if (row.IsNewRow) continue;
row.HeaderCell.Value = rowNumber.ToString();
rowNumber = rowNumber + 1;
}
}


و این کلاس رو در EVENT مورد نظرم صدا میزنم مثلا میتونید در زمان بایند اطلاعات به گرید شماره گزاری رو هم با کد زیر انجام بدید :



this.AutoNumberDataGridRows(dataGridViewSpesific1) ;


سوالی اگر بود در خدمتم ...

دوست عزیز از کدی که من تو پست 8 گذاشتم استفاده کن احتیاج به این همه کدنویسی هم نیست در ضمن معلوم میشه پست ها رو خوب نخوندی:لبخند:(
موفق باشی

mahnaz20
پنج شنبه 03 تیر 1389, 02:15 صبح
بابت راهنمایی های همه دوستان ممنونم .


مشکلم حل شد:لبخندساده:

ostovarit
جمعه 04 تیر 1389, 20:25 عصر
دوست عزیز از کدی که من تو پست 8 گذاشتم استفاده کن احتیاج به این همه کدنویسی هم نیست در ضمن معلوم میشه پست ها رو خوب نخوندی:لبخند:(
موفق باشی

من کد شما رو مجدد تست کردم و به مشکل بر خوردم وقتی از روشی که شما گفتید استفاده کنیم و گرید ویو تعداد ستون های زیادی داشته باشد به طوری که اسکرول بخوره ... شماره گذاری گرید پشت سر هم و تکرار شماره گذاری به صورت بینهایت انجام میگیره! و چون ردیف ها پشت سر هم شماره گذاری میشوند (در تعداد بالا) اعداد با سرعت بالا ظاهر و محو میشوند ... من در چندین فرم کلاسی که نوشته بودم رو پاک کردم و کد شما رو جایگزین کردم اما جواب نداد.
در ایونت های دیگه هم تست کردم ولی همچنان مشکل پابرجاست ... و باز دوباره کد خودم رو جایگزین کردم! ...

ibd_iran
شنبه 05 تیر 1389, 12:46 عصر
private DataTable AutoNumberedTable(DataTable SourceTable)
{

DataTable ResultTable = new DataTable();
DataColumn AutoNumberColumn = new DataColumn();
AutoNumberColumn.ColumnName="S.No.";
AutoNumberColumn.DataType = typeof(int);
AutoNumberColumn.AutoIncrement = true;
AutoNumberColumn.AutoIncrementSeed = 1;
AutoNumberColumn.AutoIncrementStep = 1;
ResultTable.Columns.Add(AutoNumberColumn);
ResultTable.Merge(SourceTable);
return ResultTable;
}

ho.yasreby
جمعه 06 بهمن 1391, 15:35 عصر
سلام
من فکر کنم اگر ماکزیمم اعداد ستون رو پیدا کنیم و + 1 کنیم درست بشه

select max (field name) from tablename