PDA

View Full Version : مرتب سازی رکوردهای DataTable



reza6384
یک شنبه 17 شهریور 1387, 14:37 عصر
سلام.

آیا میشه یک DataTable رو بر اساس فیلدهای اون Sort کرد؟ من تو برنامه ام می خوام یک سری رکورد موقت رو ابتدا بر حسب فیلد1، بعد فیلد2 و بعد فیلد3 مرتب کنم. اینکار رو با انتقال رکوردها به Sql و مجددا خوندن با دستور Select بلدم. اما می خوام بدونم آیا اینکارو میشه با DataTable انجام داد یا خیر.

رضا عربلو
یک شنبه 17 شهریور 1387, 19:02 عصر
یک DataView از آن بساز و آن را فیلتر کن.


DataTable dt = new DataTable();
DataView dv = new DataView(dt);
dv.Sort = "Field1, Field2, Field3"

mostafaaa
یک شنبه 17 شهریور 1387, 21:36 عصر
سلام.

آیا میشه یک DataTable رو بر اساس فیلدهای اون Sort کرد؟ من تو برنامه ام می خوام یک سری رکورد موقت رو ابتدا بر حسب فیلد1، بعد فیلد2 و بعد فیلد3 مرتب کنم. اینکار رو با انتقال رکوردها به Sql و مجددا خوندن با دستور Select بلدم. اما می خوام بدونم آیا اینکارو میشه با DataTable انجام داد یا خیر.
بله میشه . به این مثال توجه کن

Dim DT As New DataTable
DT.Columns.Add("F1")
DT.Columns.Add("F2")
Dim rnd As New Random
For i = 0 To 20
DT.Rows.Add()
DT.Rows(i).Item("F1") = rnd.Next(10)
DT.Rows(i).Item("F2") = rnd.Next(10)
Next
DT.DefaultView.Sort = "F1 ASC, F2 DESC"
Me.DataGridView1.DataSource = DT
Me.DataGridView1.DataMember = DT.TableName

reza6384
دوشنبه 18 شهریور 1387, 12:25 عصر
خیلی ممنون.

دو تا سوال دیگه .

1- آقای عربلو ، DataView از کلاس DataTable آیا Inherit شده؟ یعنی همون Property ها رو داره.
2- آقای مصطفی ، rnd تابع تولید عدد تصادفیه؟ میشه راجع بهش توضیح بدین. من یه تابع می خواستم که یه Random از 0x0000 تا 0xFFFF بهم بده که اینکار رو با خوندن ساعت سیستم ( دقیقه ، ثانیه ، میلی ثانیه ) و یک سری محاسبات روی اون انجام دادم. راه بهترش چیه؟

رضا عربلو
دوشنبه 18 شهریور 1387, 15:04 عصر
خیر DataView از کلاس DataTable آیا Inherit نشده است.

reza6384
دوشنبه 18 شهریور 1387, 15:27 عصر
دستت درد نکنه آقای عربلو. من چون نمی تونستم دوتا کلمه انگلیسی رو با یه دونه ویرگول پشت هم بنویسم نوشتم Dataview از کلاس DataTable ایا Inherit شده . منظورم این بود که Dataview از کلاس DataTable اینهریت شده. اینجوری خوبه؟
فکر کنم تو این سایت بهتره دانش همه با هم Share بشه به جای اینکه دنبال این سوتی های کوچیک یا غلط املایی باشیم.

رضا عربلو
دوشنبه 18 شهریور 1387, 18:20 عصر
دوست عزیز قصد هیچگونه توهین و یا دست اندازی نبود. صرفاً یک اشتباه لپي بود(به خاطر copy/paste)
خیر DataView از کلاس DataTable اینهریت نشده است.

mostafaaa
دوشنبه 18 شهریور 1387, 20:12 عصر
خیلی ممنون.


2- آقای مصطفی ، rnd تابع تولید عدد تصادفیه؟ میشه راجع بهش توضیح بدین. من یه تابع می خواستم که یه Random از 0x0000 تا 0xFFFF بهم بده که اینکار رو با خوندن ساعت سیستم ( دقیقه ، ثانیه ، میلی ثانیه ) و یک سری محاسبات روی اون انجام دادم. راه بهترش چیه؟
بله.همین طور که از اسمش هم پیداست کار این تابع تولید اعداد تصادفی که متدهاش هم عبارتند از "Next" که به سه شکل میشه ازش استفاده کرد 1- بدون آرگومان که یه عدد تصادفی برمیگردونه2- با آرگومان Max که براش یه سقف تایین میکنم که اعداد رو از 0 تا اون سقف برامون برگردون و 3- با دو آرگومان Max و Min برای تایین محدوده

Dim RND As New Random
Dim int As Integer
int = RND.Next
int = RND.Next(50)
int = RND.Next(50, 100)
متد بعدی"NextByte" که یه آرایه از نوع Byte رو با اعداد تصادفی بین 0 تا 256 پر میکنه که به شکل زیر استفاده میشه.

Dim RND As New Random
Dim A(10) As Byte
RND.NextBytes(A)
For i As Integer = 0 To 10
Me.ListBox1.Items.Add(A(i))
Next
و متد دیگرش هم که "NextDouble" هستش یه عدد تصادفی از نوع double بین 0 تا 1 بر میگردونه

Dim RND As New Random
Dim int As Integer
int = RND.NextDouble

reza6384
سه شنبه 19 شهریور 1387, 12:30 عصر
دوست عزیز قصد هیچگونه توهین و یا دست اندازی نبود. صرفاً یک اشتباه لپي بود(به خاطر copy/paste)
خیر DataView از کلاس DataTable اینهریت نشده است.

خوب خدا رو شکر ، چون من اشتباه فکر کردم و از دستت ناراحت شدم. در هر صورت از پاسختون ممنون. این هم تقصیر این Editor های فارسیه.

آقا مصطفی دست شما هم درد نکنه. RND رو گرفتم.

حالا یه سوال دیگه که به این تاپیک مربوط نیست.
از تابع Convert.ToInt32 برای تبدیل مبنای 2 و 8 و 16 به Decimal میشه استفاده کرد. برای تبدیل اعداد از مبناهای مختلف به Binary از چه تابعی باید استفاده کنیم؟