چطور میشه فیلد دیتا گرید شماره گزاری بشه بدون اینکه در بانک از auto number استفاده کرده باشیم و اگر دیتا گرید خالی بود شماره گزاری دوباره از یک شروع بشه ممنون
Printable View
چطور میشه فیلد دیتا گرید شماره گزاری بشه بدون اینکه در بانک از auto number استفاده کرده باشیم و اگر دیتا گرید خالی بود شماره گزاری دوباره از یک شروع بشه ممنون
سلام من چند وقت پیش یه همچین تایپیکی زدم ولی به نتیجه ای نرسیدم در هر صورت فکر کنم خودت شماره گذاری کنی بهتر باشه چون اگر از اواسط جدول حذف کنی شماره هات بهم میریزه .
بازم ببینیم دوستان نظرشون چیه ؟
موفق باشی.
بهترین کار اینه که یه متد بنویسی که خونه ها رو شماره گذاری کنه که البته دارای ردیف جاری هم هست . این به معنای اینه که از ردیفی که شما بگی خونه هارو شماره گذاری کنه .
این جوری اگه از وسط ردیف ها یه خونه حذف بشه می تونی ازاونجا دوباره شماره گذاری کنی !!!
ابته برای گریدهای طویل نمی دونم چه سربار زمانی داره !!!!!!!!!!!!!
دوست عزیز اگه منظورتون یه چیزی مثل شماره ی ردیف هست در ایونت
CellFormatting گریدتون کد زیر راامتحان کنید:
dataGridView1.Rows[e.RowIndex].Cells[0].Value = e.RowIndex + 1;
دوست عزیز اگر از BindingSouce در برنامه ات استفاده کنی میتوانی با کد زیر مشگل خودت رو رفع کنی
int a = bindingsource1.count+1;
این کد اخرین مقدار فیلد id را بر میگرداند و یک شماره به آن اضافه می کند.
دوست من اگر ردیفی حذف بشه ، این ایونت دوباره فعال میشه یا نه ؟نقل قول:
دوست عزیز اگه منظورتون یه چیزی مثل شماره ی ردیف هست در ایونت
CellFormatting گریدتون کد زیر راامتحان کنید:
کد:
dataGridView1.Rows[e.RowIndex].Cells[0].Value = e.RowIndex + 1;
همیشه ردیف ها مرتبه یا با حذف یکی به هم می خوره ؟
اگه بهم می خوره چه راه مناسبی برای resort اونها داری ؟
بله فعال می شه.نقل قول:
اگر ردیفی حذف بشه ، این ایونت دوباره فعال میشه یا نه ؟
حتی با حذف یک ردیف هم نظم حفظ می شه یعنی اعداد از شماره 1 تا تعداد ردیفهاتون مرتب می شن.نقل قول:
همیشه ردیف ها مرتبه یا با حذف یکی به هم می خوره ؟
بهتره خودت امتحان کنی.
کلا دستت خیلی گرمه ، دمتم درد نکنه !!!:لبخند:
سلام دوست عزیز ، کد جالبی بود ، من امتحان کردم ، کار کرد ولی یه مشکلی دارم نمی دونم چرا وقتی برنامه رو کامپایل می کنم 4/1 از فرمم سیاه است و وقتی با موس روشون کلیک می کنم ظاهر می شن .
حالا چرا این موضوع رو این جا مطرح کردم چون وقتی این کد رو پاک می کنم مشکلم حل میشه.
اینم عکسش دوستان لطفا کمک کنید یا اگر می تونید راه دیگه ای معرفی کنید .
http://i39.tinypic.com/2yxjgci.jpg
علی جان، هیچ مشکلی نیست.
دوستمان بهترین رویداد و بهترین کد را برای اینکار نوشته اند.
اینم یک طرز دیگه کدنویسی،که تنها مزیتش این هست که لقمه رو دور سر خودمون میپوچونیم:
private void table2DataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
int i = 0;
using (SqlCommand com = new SqlCommand())
{
try
{
SqlConnection con = new SqlConnection();
con.ConnectionString = WindowsFormsApplication7.Properties.Settings.Defau lt.Database1ConnectionString.ToString();
com.Connection = con;
com.CommandType = CommandType.StoredProcedure;
com.CommandText = "StoredProcedure1";
if (con.State == ConnectionState.Closed) con.Open();
SqlDataReader rd = com.ExecuteReader();
while (rd.Read())
{
table2DataGridView.Rows[i].Cells[0].Value = i + 1;
i++;
}
i = 0;
}
catch { }
}
}
علی جان،کد اون Form بخصوصت رو ضمیمه کن.
من فکر می کنم چون این کد در این رویداد مرتب در حال اجراست وقتی تعداد خطوط برنامه زیاد می شه این مشکل پیش میاد (البته وقتی دیتابیسم خالی این مشکل رو ندارم)
ممکن هست تصورم اشتباه باشه.
دوست عزیز میتونید از متد RowNumber در StoredProcedure تون استفاده کنید.
SELECT FirstName, LastName, ROW_NUMBER() OVER(ORDER BY SalesYTD DESC) AS 'Row Number', SalesYTD, PostalCode FROM Sales.vSalesPersonWHERE TerritoryName IS NOT NULL AND SalesYTD <> 0;
سلام
من می خواستم این کد را امتحان کنم ولی واسم error زیر را میده:
.Index was out of range .must be non-negative and less than the size of collation
parameter name:Index
می دونم که این error به تعداد ستون های گرید ویو هست ، چون من اطلاعات را از دیتا بیس می گیرم، داره می گه که ستونی که انتخاب کردید وجود نداره.
می خواستم بدونم به جز مراحل بالا باید کار دیگه ای انجام بدم؟