ASP.NET(C#) + Sql Server 开发WebForm
小弟的代码是这样的:
string SortOrder;
private void Page_Load(object sender, System.EventArgs e)//Dg_Client为DataGrid的ID
{
    if (SortOrder == null)
    {
SortOrder = "ClientNum";
    }
    this.Dg_Client.DataSource = LoadDataSource();
    this.Dg_Client.DataBind();
}
private void Dg_Client_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)//排序函数
{
    SortOrder = e.SortExpression.ToString();
    this.Dg_Client.DataSource = LoadDataSource();
    this.Dg_Client.DataBind();
}
ICollection LoadDataSource()//读取数据的函数
{
    DataSet ds = new DataSet();
    SqlConnection conn = new SqlConnection("server = localhost; integrated security=SSPI; database = test");//连接数据库
    SqlDataAdapter da = new SqlDataAdapter("select * from Client", conn);
    da.Fill(ds, "Client");
    if (SortOrder != null)
    {
ds.Tables["Client"].DefaultView.Sort = SortOrder;
    }
    return ds.Tables["Client"].DefaultView;
}
我的问题是:
1、这样的话,只能单项排序,不能进行正反双向排序!2、我把DataGrid的AutoGenerateColumns属性设置为False,并且自己通过向导填加了“模板列”,这样的话排序的功能就不能用了!请高手为小弟指点一下,谢谢!
学习,关注……

解决方案 »

  1.   

    http://dotnet.aspx.cc/ShowDetail.aspx?id=E5254FD8-252F-457C-F61E-32EE353E8BF2
    参考
      

  2.   

    aspx:<asp:TemplateColumn SortExpression="sEmailAddrST">...</asp:TemplateColumn >
    Code Behind:
    Private Sub DataGridStaff_SortCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridSortCommandEventArgs) Handles DataGridStaff.SortCommand
            Me.StaffData = Me.GetStaffInfo(e.SortExpression)
            Me.BindData()
    End Sub Private Function GetStaffInfo(ByVal orderBy As String) As DataSet
            Dim SQLString As String
            Dim paraList() As SqlParameter        If Me.StaffID = -1 Then
                SQLString = "SELECT TOP 100 * FROM tStaff ORDER BY " & orderBy
            Else
                SQLString = "SELECT * FROM tStaff WHERE iIDST = @staffID ORDER BY " & orderBy
                Dim sqlParameter As New SqlParameter("@staffID", Me.StaffID)
                paraList = New SqlParameter() {sqlParameter}
            End If        Return CommonClass.GetData(SQLString, paraList)
        End Function Private Sub BindData()
            Me.DataGridStaff.DataSource = Me.StaffData.Tables("tstaff").DefaultView
            Me.DataGridStaff.DataBind()
            Me.lblRecordCount.Text = CType(Me.DataGridStaff.DataSource, DataView).Count        Dim isNilRevord As Boolean = (Me.StaffData.Tables("tstaff").DefaultView.Count = 0)
            Me.LabelMessage.Text = IIf(isNilRevord, "No Record Found!", "")
        End Sub
      

  3.   

    http://blog.csdn.net/renyu732/archive/2005/05/27/382303.aspx肯定有你想要的.
      

  4.   

    帮兄弟顶一下,好象不是代码中的问题,而是用这样的方法可能实现不了你要的效果,看看 hackate(兰花开香入梦境,独思佳人亦飘然!!) 给出的孟子的那个连接就知道了.
      

  5.   

    我的代码至少可以实现单向的排序啊!如果DataGrid的AutoGenerateColumns属性设置为TRUE,那么单向排序是没有问题的!
    如果设置为False,那么连单向排序也不行了啊!各位大侠有兴趣的话就试一下我的代码,帮我看看如何解决这个难题!!!学习,关注……