به نظر بنده ، دیتاگریدی بده که از دیتا ست برای پر کردن اون استفاده شده باشه !! (یعنی دیتا ست خوب نیست !!!)
EndOfCsharp جان ، از چی استفاده کنم ؟
حالا من چیکار کنم ؟ میخواستم بیام تو 2005 ، یعنی پروژه هائی که دیتاگرید دارن چی میشن ؟در آخر هم یه استدلال به زبان ساده میگه اگه چیز خوبی بود ، تنها کنترلی نبو که توی دات نت 2 از صفحه روزگار حذف شده !
خیلی دوست دارم کدتونو ببینمان شا ا.. اگر برسم همین 2 ، 3 روزه کد را برایتان خواهم گذاشت
آقا این که میگی "تنها کنترلی که توی دات نت 2 از صفحه روزگار حذف شده" برای من یه سوال پیش آورده.به نقل از H_R :نه دیتا گرید مشکلش اینه که اولا خیلی خیلی بی حساب کتابه ، یعنی هرچی بهش رکورد بدی میخواد نشون بده و وای به حال برنامه ای که توش از دیتاگرید استفاده شده باشه و برنامه نویسش فکر روزی رو نکرده باشه که رکورد ها از 50 ، 60 تا بالا تر میرن ! و وای به حال روزی که این ها به 5000 و 6000 و 50000 و 600000 تا و همینطور بالا تر برسن ! نه از سرور چیزی میمونه نه از کلاینت !
از طرف دیگه دیتا گرید viewState خیلی مزخرفی داره ! بسیار بسیار سنگینه ! (که البته میدونم که میشه دیس ایبل اش کرد ولی معمولات نمیکنن )
در آخر هم یه استدلال به زبان ساده میگه اگه چیز خوبی بود ، تنها کنترلی نبو که توی دات نت 2 از صفحه روزگار حذف شده !
به نقل از mehdvirus :خوب مایکروسافت که علکی این ابزار هارو درست نکرده باید کاستمایز بشن
قبلنا یه مقاله دیده بودم
باید کاستمایز بشن
قبلنا یه مقاله دیده بودم
به نقل از winter :آقا این که میگی "تنها کنترلی که توی دات نت 2 از صفحه روزگار حذف شده" برای من یه سوال پیش آورده.
من تا حالا فکر میکردم این کنترل gridview که توی دات نت 2 هست همون دیتاگریده که اسمش عوض شده! حالا قضیه چیه؟!!
Dim starti, endi As Integer
Dim strselect As String
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Cnn.Open()
Dim sqlstr As String = "SELECT Count(*) FROM Tbl"
Dim cmdselect As SqlCommand = New SqlCommand(sqlstr, Cnn)
Me.DataGrid1.VirtualItemCount = cmdselect.ExecuteScalar / DataGrid1.PageSize
Cnn.Close()
BindGrid()
End Sub
Sub BindGrid()
Dim dad As SqlDataAdapter
Dim ds As DataSet
endi = starti + DataGrid1.PageSize
strselect = "SELECT * FROM Tbl WHERE Radif>@starti AND Radif<=@endi ORDER BY Radif"
dad = New SqlDataAdapter(strselect, cnn)
dad.SelectCommand.Parameters.Add("@starti", starti)
dad.SelectCommand.Parameters.Add("@endi", endi)
ds = New DataSet
dad.Fill(ds)
Me.DataGrid1.DataSource = ds
Me.DataGrid1.DataBind()
End Sub
Private Sub DataGrid1_PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles DataGrid1.PageIndexChanged
starti = e.NewPageIndex * DataGrid1.PageSize
DataGrid1.CurrentPageIndex = e.NewPageIndex
BindGrid()
End Sub
به نقل از EndOfCsharp :دوست عزیز
چنانچه تعداد رکودهای شما از 50 تا بیشتر نمی شود از همان grid View استفاده کنید
در غیر این صورت بایستی به کد نویسی و استفاده از datareader و کنترلهلی repeater و .. این کار را انجام دهید.
البته با دیتا لیست هم قابل انجام است
شما بایستی هنگام بایند شدن هر آیتم در دیتالیست (و یا repeatre و ...) ، از event مربوطه استفاده کنید و چک کنید که اگر اطلاعات آن آیتم خالی بود ، آن چه که مورد نظرتان است را بایند کنید.
ان شا ا.. اگر برسم همین 2 ، 3 روزه کد را برایتان خواهم گذاشت
به نقل از H_R :ببنید این یعنی دشمنی مستقیم با سرور !
که شما یه دستور سلکت بنوسید و توش معلوم نکنید که از کجا تا کجا رو براتون برگزدونه ، حالا از ه کنترلی میخواین استفاده کنه وقتی که شما اینطوری صفحه بندی میکنید هربار تمام اطلاعات از اول تا آخر از بانک اطلاعاتی به سرور منتقل میشه و میره توی دیتاستحالا شما 10 تاش رو نشون میدی ! درستش اینه که فقط 10 تا رکورد رو بگیری اگه میخوای 10 تاش رو نشون بدی مشکلش هم با یک orderd by و where و داشتن آخرین آیدی که توی هر صفحه اومده و top 10 (مثلا)حل میشه .