PDA

View Full Version : ایجاد یک ستون AutoNumber در DataGridView



hrmprog
سه شنبه 29 فروردین 1385, 16:32 عصر
سلام
من یک گرید دارم که به دیتابیس متصل است می خواهم یک ستون این گرید اتوماتیک یکی اضافه شود بدون آنکه در دیتابیس آنرا اتوماتیک تعریف کرده باشم از DefaultValueNeeded نیز استفاده کرده ام ولی نتیجه نگرفتم لطفا مرا راهنمایی کنید

niloufar
سه شنبه 29 فروردین 1385, 17:06 عصر
سلام
خوب خودت با کد نویسی این کار رو کن!

Mehrafrooz
سه شنبه 29 فروردین 1385, 17:10 عصر
شما باید یک ستون دیگه برای ردیف تعریف کنید و برای شماره گذاری می تونید از یکه حلقه for استفاده کنید . یعنی اینکه ابتدا تعداد رکوردهای موجود در دیتا گرید رو بدست بیارید و سپس در داخل حلقه از اندیس صفر شماره ستون شروع کنید و یدونه یدونه اضافه کنید .

linux
سه شنبه 29 فروردین 1385, 18:02 عصر
اگر از دیتاست استفاده می کنی می تونی توی دیتاست اون جدولی را که تعریف می کنی autonumber تعریف کنی

hrmprog
چهارشنبه 30 فروردین 1385, 08:23 صبح
با تشکر از دوستان گرامی که لطف کردند و جواب دادند باید یادآوری کنم که :
کاربر باید دیتاگرید را پرکند باید وقتی سطری اضافه می شود یک شماره ردیف به آن اختصاص یابد
و وقتی یک سطر حذف می شود باید شماره های اصلاح شود ولی جون با دیتابیس متصل است مدیریت آن کاملا در اختیار من نیست

م_پورنگ
چهارشنبه 30 فروردین 1385, 11:41 صبح
با سلام
اگر منظورتون از این فیلد Auto Number شماره ردیف است میتونید بگذاریدش توی Row Header
با دستور زیر:

Private Sub dataGridView1_RowPostPaint(ByVal sender As Object, ByVal e As DataGridViewRowPostPaintEventArgs) Handles DataGridView1.RowPostPaint
' Paint the row number on the row header.
' The using statement automatically disposes the brush.

Dim fnt As New Font("Arial", 10, FontStyle.Bold, GraphicsUnit.Point)
Using b As SolidBrush = New SolidBrush(DataGridView1.RowHeadersDefaultCellStyl e.ForeColor)
e.Graphics.DrawString(e.RowIndex.ToString(System.G lobalization.CultureInfo.CurrentUICulture), fnt, b, e.RowBounds.Location.X + 20, e.RowBounds.Location.Y + 4)
End Using

End Sub

hrmprog
پنج شنبه 31 فروردین 1385, 10:04 صبح
دوستان گرامی فکر کنم منظورم را خوب بیان نکردم
من می خواهم سند حسابداری بزنم می خواهم شماره ردیف آرتیکهای من در گرید اتوماتیک باشد که این شماره باید در دیتابیس نیز ذخیره شود ولی نمی توان در دیتابیس آنرا Autonumber تعریف کرد در ضمن این شماره باید وقتی کاربر یک آرتیکل را حذف می کند نیز تغییر کند و ..

ali_kolahdoozan
پنج شنبه 31 فروردین 1385, 10:41 صبح
اگه برنامت single user با کدنویسی بساز اگر شبکس اصلا نساز که توی شبکه درب و داغون می شه برنامت . برای SINGLE USER از AUTOINCREMENT استفاده کن

hrmprog
جمعه 01 اردیبهشت 1385, 09:11 صبح
دوباره سلام
این برنامه حسابداری به صورت کلاینت سروری است همزمان چند شرکت را ساپورت میکند و چند کاربر هم همزمان با آن کار می کنند الان در فاز پیاده سازی است در ضمن کابران همان کاربران دومین هستند برای امنیت آن نیز از CRUD استفاده شده است گزارشات آن نیز با ریپورت دات نت است که مزایای زیادی دارد ولی در بعضی موارد نیاز به بهسازی دارد این کار اتوماتیک کردن شماره را که گفتم خودم انجام دادم و در حال کار است ولی دلچسب برام نیست راضی ام نمی کند به هر حال دست همه دوستان درد نکند که جواب دادند ولی اگر کسی راه حلی پیدا کرد خوشحال می شوم پیغام بگذارد:خجالت:

hrmprog
دوشنبه 04 اردیبهشت 1385, 06:59 صبح
برای راهنمایی ممنون
من میخواهم این شماره ردیف در گرید با اضافه کردن و حذف کردن ردیف توسط کاربر تغییر کند ولی کنترل کاملی روی گرید ندارم چون به دیتابیس متصل است
در صورت امکان مرا راهنمایی کنید:گریه:

سلام
1- چرا اینو تو تاپیک نمیپرسید که هم همه جواب بدن و هم دیگران هم یاد بگیرن
2- همونطور که گفتم خودتون باید با کد نویسی همه کار رو دستتون بگیرید و منتظر کار خود دات نت نباشید. یعنی با event های گرید بیاید و بگید هر وقت یه تغییری تو گرید داده شد، یه بار دیگه ردیف ها رو مرتب کنه
3- اگه سوال دیگه ای از هر یک از دوستان داشتی، به همون دلیل اول بهتره تو تاپیک بپرسی
در جواب این دوست گرامی باید بگم این کار باید یک روش خیلی ساده داشته باشه
و چون این ردیف نیز در دیتابیس ذخیره می شود اگر بخواهیم با هر تغییر کوچکی دوباره وقت صرف مرتب سازی بکنیم وقتی تعداد کاربرها زیاد باشد و تعداد رکوردها بالا برود سرعت افت میکند
درضمن از دوستان خواهش میکنم به این نکته توجه کنند که همیشه نیاز نیست برای هر کاری خیلی کد بنویسند در خیلی از موارد راه حلهای ساده ای هم وجود دارد که باید به دنبال آنها بود

ali_kolahdoozan
دوشنبه 04 اردیبهشت 1385, 09:28 صبح
خوب پس شما یک روش با کد نویسی کم به ما یاد بدید

niloufar
دوشنبه 04 اردیبهشت 1385, 17:36 عصر
در جواب این دوست گرامی باید بگم این کار باید یک روش خیلی ساده داشته باشه
و چون این ردیف نیز در دیتابیس ذخیره می شود اگر بخواهیم با هر تغییر کوچکی دوباره وقت صرف مرتب سازی بکنیم وقتی تعداد کاربرها زیاد باشد و تعداد رکوردها بالا برود سرعت افت میکند
درضمن از دوستان خواهش میکنم به این نکته توجه کنند که همیشه نیاز نیست برای هر کاری خیلی کد بنویسند در خیلی از موارد راه حلهای ساده ای هم وجود دارد که باید به دنبال آنها بود
سلام
منم با نظر دوستمون موافقم که:


خوب پس شما یک روش با کد نویسی کم به ما یاد بدید


خوب ما هم از شما یاد میگیریم

hrmprog
سه شنبه 05 اردیبهشت 1385, 08:20 صبح
سلام
اگر این روش ساده را پیدا کرده بودم که مزاحم شما نمی شدم

niloufar
سه شنبه 05 اردیبهشت 1385, 10:13 صبح
سلام
منم یه روش ساده میخوام که خودش همه پروژه های منو انجام بده (بدون دخالت من) ولی پیدا نمیشه :-)
دلیلی نیست که واسه هر کاری یه راه ساده باشه!!

ali_kolahdoozan
سه شنبه 05 اردیبهشت 1385, 11:23 صبح
برای این کار باید کد نویسی کرد همچین زیاد هم نیست ولی فکر نکنید چون محیط برنامه نویسی visual هست دیگه همه چیز باید از قبل آماده باشه من روزهایی یاد دارم که توی فاکس تحت داس برای فارسی شدن تکست باکسهام ( که البته تکست باکسی آنجا در کار نیست ) فقط یک تابع 3500 خطی نوشتم . از کدنویسی نترسید . محیط برنامه نویسی محیط mulltimedia bullder نیست که همه چیز آماده باشه که البته آنجا هم کارهای قوی کدنویسی می خاد . اما سوالتون برای این کار باید از خاصیت autoincremant در ado.net استفاده کنید . نسبتا هم کار سختی است در شبکه هم سبب یک افتضاح بین المللی خواهد شد .

hrmprog
چهارشنبه 06 اردیبهشت 1385, 23:15 عصر
سلام با مزه بود !
ولی من دنبال یک نرم افزار که برام کد بنویسه نیستم سعی می کنم کارایی برنامه ای را که در حال کار است را بهبود ببخشم از کد نویسی هم نمی ترسم وگرنه برنامه نمی نوشتم
از جوابتان ممنون

mpayande
یک شنبه 24 اردیبهشت 1385, 13:26 عصر
سلام
من هم مشکل شما رو دارم و از autoincrement استفاده کردم،ولی هر بار باید اطلاعات این دیتاگرید حذف شود و دوباره از اول پر شود و مشکلی که وجود داره اینه که به جای این که دوباره از ردیف 1 شروع بشه ،از ادامه شماره ردیف قبلی شروع میشه،اگه شمابا مشکل من روبرو شدین (چون نوشتین که از این روش استفاده کردین) برای منم توضیح بدین ،ممنونم.

ali_kolahdoozan
یک شنبه 24 اردیبهشت 1385, 15:22 عصر
سلام با مزه بود !
ولی من دنبال یک نرم افزار که برام کد بنویسه نیستم سعی می کنم کارایی برنامه ای را که در حال کار است را بهبود ببخشم از کد نویسی هم نمی ترسم وگرنه برنامه نمی نوشتم
از جوابتان ممنون

از ایشون بپرسید . حتما تا حالا تون راه را که کارایی برنامه را هم بهبود میبخشد پیدا کردن

sinpin
جمعه 29 اردیبهشت 1385, 16:31 عصر
سلام
من از sql server 2005 استفاده میکنم که خودش تابعی برای برگردوندن ردیف داره
اینم یه مثال از یه sotred procedure:



ALTERPROCEDURE [dbo].[SubscriberShow]
AS
BEGIN
SETNOCOUNTON;
SELECT
ROW_NUMBER()OVER(ORDERBY Family,Name, Father, CardID DESC)AS [ردیف]
,ID as [شماره اشتراک]
,Nameas [نام]
,Family as [نام خانوادگی]
,Father as [نام پدر]
,CardID as [شماره شناسنامه]
,Birthday as [سال تولد]
,PDate as [تاریخ تکمیل پرونده]
FROM Subscriber
END

sinpin
جمعه 29 اردیبهشت 1385, 16:34 عصر
برای اطلاعات بیشتر یه سر به لینک زیر بزنید :

http://davidhayden.com/blog/dave/archive/2005/12/30/2652.aspx

sinpin
جمعه 29 اردیبهشت 1385, 16:46 عصر
همچنین :

http://msdn2.microsoft.com/en-us/library/ms186734(sql.90).aspx

urmiainfo
جمعه 13 مهر 1386, 18:34 عصر
Try

DGV.Rows(DGV.CurrentRow.Index).Cells(0).Value = Val(DGV.Rows(DGV.CurrentRow.Index - 1).Cells(0).Value) + 1
Catch ex As Exception
DGV.Rows(DGV.CurrentRow.Index).Cells(0).Value = 1
EndTry

DGV.Rows(DGV.CurrentRow.Index).Cells(3).Value = 1