چطور میشه فیلد دیتا گرید شماره گزاری بشه بدون اینکه در بانک از auto number استفاده کرده باشیم و اگر دیتا گرید خالی بود شماره گزاری دوباره از یک شروع بشه ممنون
چطور میشه فیلد دیتا گرید شماره گزاری بشه بدون اینکه در بانک از 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 تا تعداد ردیفهاتون مرتب می شن.همیشه ردیف ها مرتبه یا با حذف یکی به هم می خوره ؟
بهتره خودت امتحان کنی.
کلا دستت خیلی گرمه ، دمتم درد نکنه !!!
اینم عکسش دوستان لطفا کمک کنید یا اگر می تونید راه دیگه ای معرفی کنید .
علی جان، هیچ مشکلی نیست.
دوستمان بهترین رویداد و بهترین کد را برای اینکار نوشته اند.
اینم یک طرز دیگه کدنویسی،که تنها مزیتش این هست که لقمه رو دور سر خودمون میپوچونیم:
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 به تعداد ستون های گرید ویو هست ، چون من اطلاعات را از دیتا بیس می گیرم، داره می گه که ستونی که انتخاب کردید وجود نداره.
می خواستم بدونم به جز مراحل بالا باید کار دیگه ای انجام بدم؟