什么代码也没有,怎么看,给你一段,自己对比一下<%@ Import Namespace="System.Data" %><html> <script language="VB" runat="server"> Dim SortField As String Function CreateDataSource() As ICollection
Dim dt As DataTable Dim dr As DataRow Dim i As Integer 'create a DataTable dt = New DataTable dt.Columns.Add(New DataColumn("IntegerValue", GetType(Integer))) dt.Columns.Add(New DataColumn("StringValue", GetType(String))) dt.Columns.Add(New DataColumn("DateTimeValue", GetType(DateTime))) dt.Columns.Add(New DataColumn("BoolValue", GetType(Boolean))) dt.Columns.Add(new DataColumn("CurrencyValue", GetType(Double))) 'Make some rows and put some sample data in For i = 1 To 9 dr = dt.NewRow() dr(0) = 9-i dr(1) = "Item " & i.ToString() dr(2) = DateTime.Now.ToShortTimeString If (i Mod 2 <> 0) Then dr(3) = True Else dr(3) = False End If dr(4) = 1.23 * (i + 1) 'add the row to the datatable dt.Rows.Add(dr) Next 'return a DataView to the DataTable Dim dv as DataView = New DataView(dt) dv.Sort = SortField CreateDataSource = dv End Function Sub Page_Load(sender As Object, e As EventArgs) If Not IsPostBack Then If SortField = "" Then SortField = "IntegerValue" End If BindGrid End If End Sub
Sub MyDataGrid_Sort(sender As Object, e As DataGridSortCommandEventArgs) SortField = e.SortExpression BindGrid End Sub Sub BindGrid() MyDataGrid.DataSource = CreateDataSource() MyDataGrid.DataBind End Sub </script><body> <h3><font face="Verdana">Basic Sorting in DataGrid</font></h3> <form runat=server> <ASP:DataGrid id="MyDataGrid" runat="server" AllowSorting="true" OnSortCommand="MyDataGrid_Sort" BorderColor="black" BorderWidth="1" CellPadding="3" Font-Name="Verdana" Font-Size="8pt" HeaderStyle-BackColor="#ccccff" HeaderStyle-ForeColor="black" /> </form></body> </html>
代码如下: <%@ Import Namespace="System.Data" %><html> <script language="VB" runat="server"> Dim SortField As String Function CreateDataSource() As ICollection
Dim dt As DataTable Dim dr As DataRow Dim i As Integer 'create a DataTable dt = New DataTable dt.Columns.Add(New DataColumn("IntegerValue", GetType(Integer))) dt.Columns.Add(New DataColumn("StringValue", GetType(String))) dt.Columns.Add(New DataColumn("DateTimeValue", GetType(DateTime))) dt.Columns.Add(New DataColumn("BoolValue", GetType(Boolean))) dt.Columns.Add(new DataColumn("CurrencyValue", GetType(Double))) 'Make some rows and put some sample data in For i = 1 To 9 dr = dt.NewRow() dr(0) = 9-i dr(1) = "Item " & i.ToString() dr(2) = DateTime.Now.ToShortTimeString If (i Mod 2 <> 0) Then dr(3) = True Else dr(3) = False End If dr(4) = 1.23 * (i + 1) 'add the row to the datatable dt.Rows.Add(dr) Next 'return a DataView to the DataTable Dim dv as DataView = New DataView(dt) dv.Sort = SortField CreateDataSource = dv End Function Sub Page_Load(sender As Object, e As EventArgs) If Not IsPostBack Then If SortField = "" Then SortField = "IntegerValue" End If
End If End Sub sub cmdfind_click(sender As Object, e As EventArgs) BindGrid() end sub Sub MyDataGrid_Sort(sender As Object, e As DataGridSortCommandEventArgs) SortField = e.SortExpression BindGrid End Sub Sub BindGrid() MyDataGrid.DataSource = CreateDataSource() MyDataGrid.DataBind End Sub </script><body> <h3><font face="Verdana">Basic Sorting in DataGrid</font></h3> <form runat=server> <ASP:DataGrid id="MyDataGrid" runat="server" AllowSorting="true" OnSortCommand="MyDataGrid_Sort" BorderColor="black" BorderWidth="1" CellPadding="3" Font-Name="Verdana" Font-Size="8pt" HeaderStyle-BackColor="#ccccff" HeaderStyle-ForeColor="black" /> </form></body> </html> 执行完cmdfind_click并显示Datagrid可是当要排序时其中的sortcommand事件就是不执行
把邦定DataGrid的那段代码放到if(!Page.IsPostBack)里
<script language="VB" runat="server"> Dim SortField As String Function CreateDataSource() As ICollection
Dim dt As DataTable
Dim dr As DataRow
Dim i As Integer 'create a DataTable
dt = New DataTable
dt.Columns.Add(New DataColumn("IntegerValue", GetType(Integer)))
dt.Columns.Add(New DataColumn("StringValue", GetType(String)))
dt.Columns.Add(New DataColumn("DateTimeValue", GetType(DateTime)))
dt.Columns.Add(New DataColumn("BoolValue", GetType(Boolean)))
dt.Columns.Add(new DataColumn("CurrencyValue", GetType(Double))) 'Make some rows and put some sample data in
For i = 1 To 9
dr = dt.NewRow()
dr(0) = 9-i
dr(1) = "Item " & i.ToString()
dr(2) = DateTime.Now.ToShortTimeString
If (i Mod 2 <> 0) Then
dr(3) = True
Else
dr(3) = False
End If
dr(4) = 1.23 * (i + 1)
'add the row to the datatable
dt.Rows.Add(dr)
Next 'return a DataView to the DataTable
Dim dv as DataView = New DataView(dt)
dv.Sort = SortField
CreateDataSource = dv
End Function Sub Page_Load(sender As Object, e As EventArgs)
If Not IsPostBack Then
If SortField = "" Then
SortField = "IntegerValue"
End If
BindGrid
End If
End Sub
Sub MyDataGrid_Sort(sender As Object, e As DataGridSortCommandEventArgs)
SortField = e.SortExpression
BindGrid
End Sub Sub BindGrid()
MyDataGrid.DataSource = CreateDataSource()
MyDataGrid.DataBind
End Sub
</script><body> <h3><font face="Verdana">Basic Sorting in DataGrid</font></h3> <form runat=server> <ASP:DataGrid id="MyDataGrid" runat="server"
AllowSorting="true"
OnSortCommand="MyDataGrid_Sort"
BorderColor="black"
BorderWidth="1"
CellPadding="3"
Font-Name="Verdana"
Font-Size="8pt"
HeaderStyle-BackColor="#ccccff"
HeaderStyle-ForeColor="black"
/> </form></body>
</html>
{
string SortExpression=e.SortExpression.ToString(); //获得当前排序表达式
string SortDirection="ASC"; //为排序方向变量赋初值
if(SortExpression==ViewState["SortExpression"].ToString()) //如果为当前排序列
{
SortDirection=(ViewState["SortDirection"].ToString()==SortDirection?"DESC":"ASC"); //获得下一次的排序状态 }
ViewState["SortExpression"]=SortExpression;
ViewState["SortDirection"]=SortDirection;
GetDataDataSource();
}
另外看看
this.DataGridList.SortCommand += new System.Web.UI.WebControls.DataGridSortCommandEventHandler(this.DataGridList_SortCommand);
是否存在
Page_Load()中不能把邦定DataGrid的那段代码放到if(!Page.IsPostBack)里
if(!Page.IsPostBack)我是用来初始化统计条件的,然后根据条件动态的创建Datagrid的列;这时候在页面的查询条件下显示统计结果。
<%@ Import Namespace="System.Data" %><html>
<script language="VB" runat="server"> Dim SortField As String Function CreateDataSource() As ICollection
Dim dt As DataTable
Dim dr As DataRow
Dim i As Integer 'create a DataTable
dt = New DataTable
dt.Columns.Add(New DataColumn("IntegerValue", GetType(Integer)))
dt.Columns.Add(New DataColumn("StringValue", GetType(String)))
dt.Columns.Add(New DataColumn("DateTimeValue", GetType(DateTime)))
dt.Columns.Add(New DataColumn("BoolValue", GetType(Boolean)))
dt.Columns.Add(new DataColumn("CurrencyValue", GetType(Double))) 'Make some rows and put some sample data in
For i = 1 To 9
dr = dt.NewRow()
dr(0) = 9-i
dr(1) = "Item " & i.ToString()
dr(2) = DateTime.Now.ToShortTimeString
If (i Mod 2 <> 0) Then
dr(3) = True
Else
dr(3) = False
End If
dr(4) = 1.23 * (i + 1)
'add the row to the datatable
dt.Rows.Add(dr)
Next 'return a DataView to the DataTable
Dim dv as DataView = New DataView(dt)
dv.Sort = SortField
CreateDataSource = dv
End Function Sub Page_Load(sender As Object, e As EventArgs)
If Not IsPostBack Then
If SortField = "" Then
SortField = "IntegerValue"
End If
End If
End Sub
sub cmdfind_click(sender As Object, e As EventArgs) BindGrid()
end sub
Sub MyDataGrid_Sort(sender As Object, e As DataGridSortCommandEventArgs)
SortField = e.SortExpression
BindGrid
End Sub Sub BindGrid()
MyDataGrid.DataSource = CreateDataSource()
MyDataGrid.DataBind
End Sub
</script><body> <h3><font face="Verdana">Basic Sorting in DataGrid</font></h3> <form runat=server> <ASP:DataGrid id="MyDataGrid" runat="server"
AllowSorting="true"
OnSortCommand="MyDataGrid_Sort"
BorderColor="black"
BorderWidth="1"
CellPadding="3"
Font-Name="Verdana"
Font-Size="8pt"
HeaderStyle-BackColor="#ccccff"
HeaderStyle-ForeColor="black"
/> </form></body>
</html>
执行完cmdfind_click并显示Datagrid可是当要排序时其中的sortcommand事件就是不执行