h.alizadeh
چهارشنبه 04 اردیبهشت 1387, 00:02 صبح
سلام،
من می خوام در این برنامه ام امکان مرتب سازی و صفجه بندی رو با هم برای دیتاگریدم بزارم.
این کد کامل فایل من هست:
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Data" %>
<Script Runat="Server">
dim sortstr as string
Sub Page_Load
If Not isPostBack Then
sortstr="nid"
lbl.text=sortstr
BindDataGrid(sortstr)
End If
End Sub
Sub BindDataGrid( strSortField As String )
Dim con As SqlConnection
Dim dad As SqlDataAdapter
Dim dst As DataSet
con = New SqlConnection( "Server=localhost;UID=sa;PWD=sa;Database=Main" )
dad= New SqlDataAdapter( "Select * From news Order By " & strSortField , con )
dst = New DataSet
dad.Fill( dst )
dgrd.DataSource = dst
dgrd.DataBind()
End Sub
Sub dgrd_PageIndexChanged( s As Object, e As DataGridPageChangedEventArgs )
dgrd.CurrentPageIndex = e.NewPageIndex
lbl.text=sortstr 'اینجا مقدارمتغیر رو خالی نشون میده.
sortstr="nid"
BindDataGrid(sortstr)
End Sub
Sub dgrd_SortCommand( s As Object, e As DataGridSortCommandEventArgs )
sortstr=e.SortExpression
lbl.text=sortstr
BindDataGrid( sortstr )
End Sub
</Script>
<html>
<head><title>DataGridPaging.aspx</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head>
<body>
<table dir="rtl" align="center" bordercolor="#FF00CC" border="2"><tr><td>
<form runat="server">
<asp:DataGrid ID="dgrd"
AllowSorting="True"
OnSortCommand="dgrd_SortCommand"
CellPadding="10" AllowPaging="True"
PageSize="3"
OnPageIndexChanged="dgrd_PageIndexChanged"
runat="server" AutoGenerateColumns="false"
>
<HeaderStyle Font-Bold="True" ForeColor="#0000cc" BackColor="LightGrey"></HeaderStyle>
<columns>
<asp:TemplateColumn HeaderText="انتخاب">
<ItemTemplate>
<asp:CheckBox id="Checkbox1" runat="server"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="nid" SortExpression="nid" HeaderText="شماره ارسال"></asp:BoundColumn>
<asp:BoundColumn DataField="title" SortExpression="title" HeaderText="عنوان"></asp:BoundColumn>
<asp:BoundColumn DataField="matn" SortExpression="matn" HeaderText="متن"></asp:BoundColumn>
<asp:BoundColumn DataField="datesend" SortExpression="datesend" HeaderText="تاریخ ارسال "></asp:BoundColumn>
</columns>
</asp:DataGrid>
<asp:Label ID="lbl" runat="server"/></form></td></tr></table>
</body>
</html>
ببینید من یک زیربرنامه BindDataGrid دارم که موقع مرتب کردن براساس ستونها و یا حرکت بین صفحه ها فراخوانی میشه ...
خب من یک متغیرسراسری بنامsortstr هم تعیریف کردم که در اون مقدار فیلدی قرار میگیره که هم اکنون دیتاگرید براساس اون فیلد مرتب شده...
اما وقتی من مقدار sortstr رو در یک لیبل (بانامlbl) نمایش میدم مقدارش رو خالی نشون میده!!!!!!!!!!!
اما وقتی که مثلا من همونجا بهش مقدار بدم بعد توی لیبل نمایش بدم مقدار رو نشون میده...
مثلا من در زیربرنامهdgrd_SortCommand مقدارsortstrرو می دم sortstr=e.SortExpression
خب بعد توی لیبل مقدار فیلد موردنظر رو نشون میده اما وقتی که در dgrd_PageIndexChangedمی خوام مقدار قبلی متغیرsortstr رو نشون بده خالی نشون میده!!!!!!!!!!
دلیلش چیه؟ مگه الان سراسری نیست؟!
------
اگه روش دیگه ای هم میدونید که بتونم امکان مرتب سازی براساس ستونهای خاصی به همراه صفحه بندی رو در یک برنامه بزارم بهم بگید.
ممنون
(من کدهام رو دستی توی دریم وریور می نویسم فعلاً)
من می خوام در این برنامه ام امکان مرتب سازی و صفجه بندی رو با هم برای دیتاگریدم بزارم.
این کد کامل فایل من هست:
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Data" %>
<Script Runat="Server">
dim sortstr as string
Sub Page_Load
If Not isPostBack Then
sortstr="nid"
lbl.text=sortstr
BindDataGrid(sortstr)
End If
End Sub
Sub BindDataGrid( strSortField As String )
Dim con As SqlConnection
Dim dad As SqlDataAdapter
Dim dst As DataSet
con = New SqlConnection( "Server=localhost;UID=sa;PWD=sa;Database=Main" )
dad= New SqlDataAdapter( "Select * From news Order By " & strSortField , con )
dst = New DataSet
dad.Fill( dst )
dgrd.DataSource = dst
dgrd.DataBind()
End Sub
Sub dgrd_PageIndexChanged( s As Object, e As DataGridPageChangedEventArgs )
dgrd.CurrentPageIndex = e.NewPageIndex
lbl.text=sortstr 'اینجا مقدارمتغیر رو خالی نشون میده.
sortstr="nid"
BindDataGrid(sortstr)
End Sub
Sub dgrd_SortCommand( s As Object, e As DataGridSortCommandEventArgs )
sortstr=e.SortExpression
lbl.text=sortstr
BindDataGrid( sortstr )
End Sub
</Script>
<html>
<head><title>DataGridPaging.aspx</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head>
<body>
<table dir="rtl" align="center" bordercolor="#FF00CC" border="2"><tr><td>
<form runat="server">
<asp:DataGrid ID="dgrd"
AllowSorting="True"
OnSortCommand="dgrd_SortCommand"
CellPadding="10" AllowPaging="True"
PageSize="3"
OnPageIndexChanged="dgrd_PageIndexChanged"
runat="server" AutoGenerateColumns="false"
>
<HeaderStyle Font-Bold="True" ForeColor="#0000cc" BackColor="LightGrey"></HeaderStyle>
<columns>
<asp:TemplateColumn HeaderText="انتخاب">
<ItemTemplate>
<asp:CheckBox id="Checkbox1" runat="server"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="nid" SortExpression="nid" HeaderText="شماره ارسال"></asp:BoundColumn>
<asp:BoundColumn DataField="title" SortExpression="title" HeaderText="عنوان"></asp:BoundColumn>
<asp:BoundColumn DataField="matn" SortExpression="matn" HeaderText="متن"></asp:BoundColumn>
<asp:BoundColumn DataField="datesend" SortExpression="datesend" HeaderText="تاریخ ارسال "></asp:BoundColumn>
</columns>
</asp:DataGrid>
<asp:Label ID="lbl" runat="server"/></form></td></tr></table>
</body>
</html>
ببینید من یک زیربرنامه BindDataGrid دارم که موقع مرتب کردن براساس ستونها و یا حرکت بین صفحه ها فراخوانی میشه ...
خب من یک متغیرسراسری بنامsortstr هم تعیریف کردم که در اون مقدار فیلدی قرار میگیره که هم اکنون دیتاگرید براساس اون فیلد مرتب شده...
اما وقتی من مقدار sortstr رو در یک لیبل (بانامlbl) نمایش میدم مقدارش رو خالی نشون میده!!!!!!!!!!!
اما وقتی که مثلا من همونجا بهش مقدار بدم بعد توی لیبل نمایش بدم مقدار رو نشون میده...
مثلا من در زیربرنامهdgrd_SortCommand مقدارsortstrرو می دم sortstr=e.SortExpression
خب بعد توی لیبل مقدار فیلد موردنظر رو نشون میده اما وقتی که در dgrd_PageIndexChangedمی خوام مقدار قبلی متغیرsortstr رو نشون بده خالی نشون میده!!!!!!!!!!
دلیلش چیه؟ مگه الان سراسری نیست؟!
------
اگه روش دیگه ای هم میدونید که بتونم امکان مرتب سازی براساس ستونهای خاصی به همراه صفحه بندی رو در یک برنامه بزارم بهم بگید.
ممنون
(من کدهام رو دستی توی دریم وریور می نویسم فعلاً)