javad3151
شنبه 01 بهمن 1384, 14:34 عصر
سلام
یک دیتاگرید داریم که اطلاعات را بصورت paging نشان میده اطلاعات این دیتاگرید بصورت راندوم داخلش قرار می گیره (با استفاده از order by newid) در دستور sql .
مشکل اینجاست که چون هر بار که کاربر یک صفحه از دیتاگرید را درخواست می کند یکبار دستور sql اجرا می شود, صفحات ثابت نیستند یعنی اگر دوبار به صفحه اول بروید اطلاعات متفاوتی می بینید
چطور میشه این مشکل رو حل کرد؟؟
این هم کد برنامه:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Not Page.IsPostBack Then
readdata()
End If
End Sub
Sub readdata()
Dim cn As SqlConnection
Dim cmd1 As SqlCommand
Dim adp As SqlDataAdapter
Dim sql As String
cn = New SqlConnection(ConfigurationSettings.AppSettings.It em("constr"))
cn.Open()
sql = "SELECT * FROM dbo.users order by newid()"
adp = New SqlDataAdapter(sql, cn)
adp.Fill(ds)
Me.DataGrid1.DataSource = ds
DataBind()
cn.Close()
End Sub
Private Sub DataGrid1_PageIndexChanged(ByVal source As Object, _
ByVal e As System.Web.UI.WebControls.DataGridPageChangedEvent Args) _
Handles DataGrid1.PageIndexChanged
DataGrid1.CurrentPageIndex = e.NewPageIndex
Me.readdata()
End Sub
یک دیتاگرید داریم که اطلاعات را بصورت paging نشان میده اطلاعات این دیتاگرید بصورت راندوم داخلش قرار می گیره (با استفاده از order by newid) در دستور sql .
مشکل اینجاست که چون هر بار که کاربر یک صفحه از دیتاگرید را درخواست می کند یکبار دستور sql اجرا می شود, صفحات ثابت نیستند یعنی اگر دوبار به صفحه اول بروید اطلاعات متفاوتی می بینید
چطور میشه این مشکل رو حل کرد؟؟
این هم کد برنامه:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Not Page.IsPostBack Then
readdata()
End If
End Sub
Sub readdata()
Dim cn As SqlConnection
Dim cmd1 As SqlCommand
Dim adp As SqlDataAdapter
Dim sql As String
cn = New SqlConnection(ConfigurationSettings.AppSettings.It em("constr"))
cn.Open()
sql = "SELECT * FROM dbo.users order by newid()"
adp = New SqlDataAdapter(sql, cn)
adp.Fill(ds)
Me.DataGrid1.DataSource = ds
DataBind()
cn.Close()
End Sub
Private Sub DataGrid1_PageIndexChanged(ByVal source As Object, _
ByVal e As System.Web.UI.WebControls.DataGridPageChangedEvent Args) _
Handles DataGrid1.PageIndexChanged
DataGrid1.CurrentPageIndex = e.NewPageIndex
Me.readdata()
End Sub