Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

NS-5 Without the 3 Law

[Resolvido] Problema com Sort do DataView

Recommended Posts

E ae galera.

 

 

Bem queria saber como faz pra dar um sort pelo titulo da coluna do Dataview.

 

 

Não estou conseguindo fazer...

Se alguem tiver um exemplo eu agradeço =]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola Master,

 

 

Aqui vai um exemplo simples com 4 linhas de programação para resolver seu problema..

 

private void OrdenaLista()
{        
  DataView dv = new DataView(MeuDataSet.Tables[0]);
  dv.Sort = "CAMPO1, CAMPO2";
  MeuDataGrid.DataSource = dv;        
  MeuDataGrid.DataBind();
}

Espero te-lo ajudado. ;)

 

Atenciosamente,

Angelo Compri

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao, o problema é que estou usando Data table e não consigo pegar o valor que está no grid pra dar o sort no view e depois devolver.

 

 

Tem algum outro jeito .-. ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom,

 

Você pode usar um DataView ao invés de um DataTable:

 

DataView dv = new DataView(MeuDataTable);
MeuDataGrid.DataSource = dv;
MeuDataGrid.DataBind();

Para pegar a coluna que a pessoa selecionou utilize o evento: Sorting do DataGrid.

Eis o exemplo:

 

        protected void Page_Load(object sender, EventArgs e)
        {
            OracleConnection conn = new OracleConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ToString());
            string strSql = @"SELECT CD_FUNCIONARIO, NM_FUNCIONARIO, CD_AREA, NR_TELRES FROM CACOFUNC";
            OracleDataAdapter da = new OracleDataAdapter(strSql, conn);
            
            DataTable dt = new DataTable();
            da.Fill(dt);
            MeuDataGrid.DataSource = dt;
            MeuDataGrid.DataBind();
        }

        protected void MeuDataGrid_Sorting(object sender, GridViewSortEventArgs e)
        {
            DataView dv = new DataView(MeuDataGrid.DataSource as DataTable);
            dv.Sort = e.SortExpression;
            MeuDataGrid.DataSource = dv;
            MeuDataGrid.DataBind();

        }

Espero te-lo ajudado! ;)

 

Abraços,

Angelo Compri

Compartilhar este post


Link para o post
Compartilhar em outros sites

angelo obrigado pela dica, mas resolvi assim.

 

 

Private Property SortDirection() As String
        Get
            If (ViewState("SortDirection") Is Nothing) Then ViewState("SortDirection") = String.Empty
            Return ViewState("SortDirection").ToString()
        End Get
        Set(ByVal value As String)
            ViewState("SortDirection") = value
        End Set
    End Property

    Public Function GetSortableData(ByVal Expression As String) As DataView
        dtSortUser = Session("SortUser")
        Dim SampleSource As New DataSet
        Dim SortableView As DataView
        SampleSource.Tables.Add(dtSortUser)
        Try
            SortableView = SampleSource.Tables(0).DefaultView
            If (Not String.IsNullOrEmpty(Expression)) Then
                If (SortDirection.ToUpper() = "ASC") Then
                    SortDirection = "DESC"
                Else
                    SortDirection = "ASC"
                End If
                SortableView.Sort = Expression & " " & SortDirection
            End If
        Catch ex As Exception
            Throw ex
        End Try
        SampleSource.Tables.Remove(dtSortUser)
        Return SortableView
    End Function

    Protected Sub dgUser_Sorting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewSortEventArgs) Handles dgUser.Sorting
        dgUser.DataSource = GetSortableData(e.SortExpression)
        dgUser.DataBind()
    End Sub

    Protected Sub dgMain_Sorting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewSortEventArgs) Handles dgMain.Sorting
        dgMain.DataSource = GetSortableData_2(e.SortExpression)
        dgMain.DataBind()
    End Sub

    Public Function GetSortableData_2(ByVal Expression As String) As DataView
        dtSortMain = Session("SortMain")
        Dim SampleSource As New DataSet
        Dim SortableView As DataView
        SampleSource.Tables.Add(dtSortMain)
        Try
            SortableView = SampleSource.Tables(0).DefaultView
            If (Not String.IsNullOrEmpty(Expression)) Then
                If (SortDirection.ToUpper() = "ASC") Then
                    SortDirection = "DESC"
                Else
                    SortDirection = "ASC"
                End If
                SortableView.Sort = Expression & " " & SortDirection
            End If
        Catch ex As Exception
            Throw ex
        End Try
        SampleSource.Tables.Remove(dtSortMain)
        Return SortableView
    End Function

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.