PDA

View Full Version : قرار دادن شماره ردیف در یکData Gride



kasmaii61
سه شنبه 15 اسفند 1385, 16:45 عصر
سلام دوستان
من یک Data Grid دارم که از طریق یک Adodc به یک Table از یک بانک Sql متصل و اطلاعات اون رو نمایش می ده
می خواستم بدونم چه جوری می تونم یک ستون در Data Grid قرار بدم که شماره ردیف رو نمایش بده
جون بانک دائما در حال Update شدن نمی تونم یک فیلد تو بانک برای این کار در نظر بگیرم و اصلا فکر می کنم که همچین کاری هم درست نباشه
پیشاپیش از کمکتون ممنون

__H2__
چهارشنبه 16 اسفند 1385, 10:41 صبح
سلام
عزیز جان، اگر منظورتان انجام اینکار با VB6 عهد دقیانوس است باید بگویم که این کار بسیار مشکل است! و راه حل آن فقط داشتن ستونی متناظر در جدول اصلی است. البته اگر به SQL Server بخواهید وصل شوید راهی دارد.

ولی اگر از همه بهتر متحول شوید! و با VB8 کار کنید راهش بسیار راحت است.
اگر با SQL Server یا VB8 کار میکنید بگویید تا جوابتان را کاملتر بدهم.

partland
چهارشنبه 16 اسفند 1385, 16:55 عصر
ولی اگر از همه بهتر متحول شوید! و با VB8 کار کنید راهش بسیار راحت است.
اگر با SQL Server یا VB8 کار میکنید بگویید تا جوابتان را کاملتر بدهم.

من هم همین مشکل رو دارم و با vb8 کارمیکنم، ممنون میشم راهنمایی بفرمایید

kasmaii61
چهارشنبه 16 اسفند 1385, 19:39 عصر
دوست عزیز متاسفانه برنامه با همون 6 Vb دقیانوس نوشته شده
ولی بانکم SQL SERVER 2000

__H2__
پنج شنبه 17 اسفند 1385, 09:28 صبح
سلام
اول جواب SQl Server که کمتر است.
بازهم این ورژن های قدیمی!!! من یک دستور در SQL Server 2005 بلد هستم که مشکل را حل میکند ولی مطمئن نیستم در SQL Server 2000 جواب دهد، خودتان باید امتحان کنید.

شما باید به جای دستور مرسوم SELECT * FROM TableName از دستور زیر استفاده کنید.
SELECT ROW_NUMBER() OVER(ORDER BY TableKey ASC) AS RowNumber , TableName.* FROM TableName

و فراموش نشود که به جای TableKey باید از نام فیلدی که میخواهید عمل شماره گذاری براساس ترتیب آن انجام گیرد استفاده کنید که معمولاَ نام فیلدی که کلید جدول است را باید بیاورید. به این ترتیب یک ستون مجازی حاوی شماره سطر خواهید داشت.

و اما دوست عزیز VB8 کار!
راه حل شما بسیار ساده و راحت، سریع و مطمئن است و به هیچ وجه در ساختار بانک و DataSet خللی وارد نمیکند. براحتی میتوانید این روش را برای پروژه ای که قبلاَ نوشته شده بکار بگیرید بدون آنکه یک خط کد نویسی کنید! یا کدی را تغییر دهید!
من هم قبلاَ این مشکل را داشتم در نتیجه یک نوع ستون جدید برای DataGridView طراحی کرده ام. اگر توجه کرده باشید با انتخاب گزینه Add Column شش نوع مختلف ستون در اختیار شما قرار میگیرد که هر کدام قابلیتی دارد. آن شش مورد اینها هستند:
DataGridViewButtonColumn
DataGridViewCheckBoxColumn
DataGridViewComboBoxColumn
DataGridViewImageColumn
DataGridViewLinkColumn
DataGridViewTextBoxColumn
بعد از اضافه کردن DLL زیر به پروژتان، به طور خودکار دو ستون جدید به با نام های
DataGridViewIrDateColumn و DataGridViewRowNumberColumn
به این لیست اضافه میشود که اولی نمایش تاریخ شمسی را در DataGridView مدیریت میکند و دومی یک ستونی است که همواره و در هر شرایطی (حتی بدون توجه به Sorting) شماره سطر جاری را نشان میدهد، (که البته میتوانید شروع ایندکس را هم مشخص کنید).

در نتیجه فقط کافیست این DLL را به Refrence های پروژه تان اضافه کنید و بعد یک ستون از نوع DataGridViewRowNumberColumn به DataGridView مورد نظر اضافه کنید. همین!

البته در این DLL امکانات دیگری هم کپسوله شده که میتوانید، اگر مایل بودید، برای اطلاع بیشتر به لینکهای زیر مراجعه کنید:
اطلاعات راجب این DLL (فارسی)
http://www.h-two.info/Products/H2GBN/Default.aspx
http://www.H002.info/Products/H2GBN/Default.aspx

دانلود مستقیم و بی واسطه (181KB)
http://www.h-two.info/Download.aspx?File=H2GBN.dll.zip
http://www.H002.info/Download.aspx?File=H2GBN.dll.zip

همیشه یکی از این جفت لینک ها مشکل دارد (فعلاَ).

kasmaii61
شنبه 19 اسفند 1385, 08:40 صبح
دوست عزیز از کمکت ممنون
منتها اون چیزی که من امتحان کردم ظاهرا تو SQL SERVER 2000 این کار شدنی نیست
در ضمن استفاده از ورژنهای قدیمی گاهی اجتناب ناپذیر مثل وقتی که برنامه ای قبلا نوشته شده و الان از اون استفاده میشه
از دوستان اگه کسی راه حل دیگه ای داره دریغ نکن
ممنون