Gridview de tri lors de la liaison de données à partir du fichier code-behind
Je suis en utilisant asp.net web-la forme et le gridview sur plusieurs pages pour afficher les données. - Je lier gridview à partir du fichier code-behind.
Jusqu'à présent, je suis en mesure d'utiliser code suivant pour lier la source de données à gridview et également activer la pagination, mais j'ai un face à problème pour activer le tri sur la même grille. N'importe quel point ou de l'aide sur la façon d'activer la pagination de la faire fonctionner avec le code ci-dessous.
J'ai aussi plus de domaines qui ne font pas partie de ce code que j'utilise pour des fonctionnalités supplémentaires
onrowdatabound="GridView1_RowDataBound" onrowcommand="GridView1_RowCommand"
.Fichier ASPX
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False" DataKeyNames="ID"
Width="990px" BackColor="White" BorderColor="WhiteSmoke" BorderStyle="None" BorderWidth="0px" CellPadding="5"
Font-Names="Verdana" Font-Size="X-Small" ForeColor="Black" GridLines="Horizontal" PageSize="10" CssClass="myheader" AllowSorting="true"
onrowdatabound="GridView1_RowDataBound" onrowcommand="GridView1_RowCommand" onpageindexchanging="GridView1_PageIndexChanging" >
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID" SortExpression="ID" />
<asp:BoundField DataField="FirstName" HeaderText="First Name" SortExpression="FirstName" />
<asp:BoundField DataField="LastName" HeaderText="Last Name" SortExpression="LastName" />
<asp:BoundField DataField="Date" HeaderText="Date" SortExpression="Date" DataFormatString="{0:yyyy/MM/dd}"/>
</Columns>
<FooterStyle BackColor="#CCCC99" ForeColor="Black" />
<HeaderStyle Height="32px" Font-Bold="True" ForeColor="White" HorizontalAlign="Left" BorderStyle="None" />
<PagerStyle BackColor="White" ForeColor="Black" HorizontalAlign="Right" />
<SortedAscendingCellStyle BackColor="#F7F7F7" />
<SortedAscendingHeaderStyle BackColor="#4B4B4B" />
<SortedDescendingCellStyle BackColor="#E5E5E5" />
<SortedDescendingHeaderStyle BackColor="#242121" />
<RowStyle BorderColor="#f5f5f5" BorderStyle="Notset"/>
</asp:GridView>
CODE DERRIÈRE
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GetDetails();
}
}
protected void GetDetails()
{
string strSql = "SELECT * FROM Test_Table Order by Date Desc ";
DataSet ds = DataProvider.Connect_Select(strSql);
GridView1.DataSource = ds;
GridView1.DataBind();
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
GetDetails();
}
Mise à JOUR: Code mis à jour pour
.ASPX
OnSorting="GridView1_OnSorting"
CODE DERRIÈRE
protected void GridView1_OnSorting(object sender, GridViewSortEventArgs e)
{
string strSql = "SELECT * FROM Test_Table ";
DataSet ds = DataProvider.Connect_Select(strSql);
DataTable dataTable = ds.Tables[0];
DataTable dataTable = ds.Tables[0];
if (dataTable != null)
{
DataView dataView = new DataView(dataTable);
dataView.Sort = e.SortExpression + " "+e.SortDirection;
GridView1.DataSource = dataView;
GridView1.DataBind();
}
}
<PagerSettings PageButtonCount="8"></PagerSettings>
Vous devez vous connecter pour publier un commentaire.
Vous devez créer tri événement comme celui-ci :
Vous pouvez aussi prendre le sens de tri dans l'état d'affichage sur la page
J'espère code ci-dessus vous aider.
OnSorting="GridView1_OnSorting"
et puis votre code ne fonctionne pas..OnSorting()
logique n'a aucun sens. Vous avez définidataView
après sa première utilisation. Et vous avez misdataView.Sort
une fois dans votre instruction if (où vous aussi vous avez jetéSortDirection
à la chaîne, au lieu de le comparer àSortDirection.Ascending
ouSortDirection.Descending
) et puis vous définissezdataView.Sort
nouveau juste en dessous de cette instruction conditionnelle.SOLUTION
J'ai supprimé l'ancien code, elle avait un bug que le tri ne fonctionne pas correctement lorsque l'un de nous déplacer d'une page à l'autre. Ci-dessous le code, c'est de tester et fonctionne bien avec le tri & pagination.
PageIndexChanging
événement. Voir ma réponse.new sort
? Êtes-vous à l'aide de ce code de la vôtre ou de mon code? Si c'est mon code, s'il vous plaît commentaire ci-dessous ma réponse à la place.Vous avez déjà mis en
AllowSorting="true"
et la SortExpression propriété pour chaque colonne, la prochaine étape est de garder la dernière expression de tri et de sens de tri entre les publications, et de les utiliser dans PageIndexChanging et Tri événement.Je conseille ViewState de garder la dernière expression de tri et de sens de tri
C'est la méthode pour obtenir le tri suivant la direction:
GetDetails
méthode aura besoin de savoir l'expression de tri et de sens de tri, afin d'ajoutersortExpression
etsortDirection
paramètre:Assurez-vous d'ajouter
OnSorting="GridView1_Sorting"
àGridView1
code de balisage:En supposant que le tri par défaut expression est
Date
et de tri par défaut de la direction estDESC
, c'est ce quePage_Load
,GridView1_PageIndexChanging
, etGridView1_Sorting
méthodes ressembleraMise à JOUR
Si vous voulez aller à la page 1 lors du tri, il suffit d'ajouter
GridView1.PageIndex = 0;
àGridView1_Sorting
: