PDA

View Full Version : autonumber



mohammadreza1368
پنج شنبه 17 اردیبهشت 1388, 00:34 صبح
چطور میشه فیلد دیتا گرید شماره گزاری بشه بدون اینکه در بانک از auto number استفاده کرده باشیم و اگر دیتا گرید خالی بود شماره گزاری دوباره از یک شروع بشه ممنون

asefy2008
پنج شنبه 17 اردیبهشت 1388, 01:14 صبح
سلام من چند وقت پیش یه همچین تایپیکی زدم ولی به نتیجه ای نرسیدم در هر صورت فکر کنم خودت شماره گذاری کنی بهتر باشه چون اگر از اواسط جدول حذف کنی شماره هات بهم میریزه .
بازم ببینیم دوستان نظرشون چیه ؟
موفق باشی.

seven7777777
پنج شنبه 17 اردیبهشت 1388, 03:10 صبح
بهترین کار اینه که یه متد بنویسی که خونه ها رو شماره گذاری کنه که البته دارای ردیف جاری هم هست . این به معنای اینه که از ردیفی که شما بگی خونه هارو شماره گذاری کنه .
این جوری اگه از وسط ردیف ها یه خونه حذف بشه می تونی ازاونجا دوباره شماره گذاری کنی !!!

ابته برای گریدهای طویل نمی دونم چه سربار زمانی داره !!!!!!!!!!!!!

happy65_sh
پنج شنبه 17 اردیبهشت 1388, 10:32 صبح
دوست عزیز اگه منظورتون یه چیزی مثل شماره ی ردیف هست در ایونت
CellFormatting گریدتون کد زیر راامتحان کنید:


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

mahdi_abdollahi
پنج شنبه 17 اردیبهشت 1388, 10:50 صبح
دوست عزیز اگر از BindingSouce در برنامه ات استفاده کنی میتوانی با کد زیر مشگل خودت رو رفع کنی
int a = bindingsource1.count+1;
این کد اخرین مقدار فیلد id را بر میگرداند و یک شماره به آن اضافه می کند.

seven7777777
پنج شنبه 17 اردیبهشت 1388, 12:22 عصر
دوست عزیز اگه منظورتون یه چیزی مثل شماره ی ردیف هست در ایونت
CellFormatting گریدتون کد زیر راامتحان کنید:
کد:
dataGridView1.Rows[e.RowIndex].Cells[0].Value = e.RowIndex + 1;



دوست من اگر ردیفی حذف بشه ، این ایونت دوباره فعال میشه یا نه ؟
همیشه ردیف ها مرتبه یا با حذف یکی به هم می خوره ؟
اگه بهم می خوره چه راه مناسبی برای resort اونها داری ؟

happy65_sh
پنج شنبه 17 اردیبهشت 1388, 12:41 عصر
اگر ردیفی حذف بشه ، این ایونت دوباره فعال میشه یا نه ؟

بله فعال می شه.

همیشه ردیف ها مرتبه یا با حذف یکی به هم می خوره ؟
حتی با حذف یک ردیف هم نظم حفظ می شه یعنی اعداد از شماره 1 تا تعداد ردیفهاتون مرتب می شن.
بهتره خودت امتحان کنی.

seven7777777
پنج شنبه 17 اردیبهشت 1388, 17:46 عصر
کلا دستت خیلی گرمه ، دمتم درد نکنه !!!:لبخند:

asefy2008
دوشنبه 21 اردیبهشت 1388, 22:43 عصر
دوست عزیز اگه منظورتون یه چیزی مثل شماره ی ردیف هست در ایونت
CellFormatting گریدتون کد زیر راامتحان کنید:


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

سلام دوست عزیز ، کد جالبی بود ، من امتحان کردم ، کار کرد ولی یه مشکلی دارم نمی دونم چرا وقتی برنامه رو کامپایل می کنم 4/1 از فرمم سیاه است و وقتی با موس روشون کلیک می کنم ظاهر می شن .
حالا چرا این موضوع رو این جا مطرح کردم چون وقتی این کد رو پاک می کنم مشکلم حل میشه.

asefy2008
پنج شنبه 24 اردیبهشت 1388, 01:07 صبح
اینم عکسش دوستان لطفا کمک کنید یا اگر می تونید راه دیگه ای معرفی کنید .
http://i39.tinypic.com/2yxjgci.jpg

محمدامین شریفی
پنج شنبه 24 اردیبهشت 1388, 01:48 صبح
سلام دوست عزیز ، کد جالبی بود ، من امتحان کردم ، کار کرد ولی یه مشکلی دارم نمی دونم چرا وقتی برنامه رو کامپایل می کنم 4/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 بخصوصت رو ضمیمه کن.

asefy2008
پنج شنبه 24 اردیبهشت 1388, 19:37 عصر
من فکر می کنم چون این کد در این رویداد مرتب در حال اجراست وقتی تعداد خطوط برنامه زیاد می شه این مشکل پیش میاد (البته وقتی دیتابیسم خالی این مشکل رو ندارم)
ممکن هست تصورم اشتباه باشه.

بانوآفتاب
جمعه 25 اردیبهشت 1388, 21:08 عصر
دوست عزیز میتونید از متد 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;

sara.f
پنج شنبه 30 مهر 1388, 13:39 عصر
سلام دوست عزیز ، کد جالبی بود ، من امتحان کردم ، کار کرد ولی یه مشکلی دارم نمی دونم چرا وقتی برنامه رو کامپایل می کنم 4/1 از فرمم سیاه است و وقتی با موس روشون کلیک می کنم ظاهر می شن .
حالا چرا این موضوع رو این جا مطرح کردم چون وقتی این کد رو پاک می کنم مشکلم حل میشه.
سلام
من می خواستم این کد را امتحان کنم ولی واسم error زیر را میده:
.Index was out of range .must be non-negative and less than the size of collation
parameter name:Index
می دونم که این error به تعداد ستون های گرید ویو هست ، چون من اطلاعات را از دیتا بیس می گیرم، داره می گه که ستونی که انتخاب کردید وجود نداره.
می خواستم بدونم به جز مراحل بالا باید کار دیگه ای انجام بدم؟