Sous asp.net 2.0, GridView est très pratique. Si vous ajoutez un contrôle de la série DATASOURCE, vous pouvez le lier immédiatement à GridView, ce qui est très pratique. Mais en fait, vous pouvez également utiliser datatable ou dataview. Pour le moment, vous n'utiliserez pas les contrôles de série de sources de données. Parlons de la façon de réaliser le changement de page et le tri de chaque colonne dans le contrôle GridView sous asp.net 2.0.
Fonction d'édition.
Tout d’abord, nous lisons la table des employés dans la base de données Northwind. Après avoir placé une grille, ajoutez plusieurs colonnes liées, le code est le suivant
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True"
AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333" GridLines="Aucun"
Largeur="100%" DataKeyNames="EmployeeID" OnPageIndexChanging="GridView1_PageIndexChanging" OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating" OnSorting="GridView1_Sorting" PageSize="3" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowCommand="G owCommand">
<FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="Blanc" />
<Colonnes>
<asp:BoundField DataField="employeeid" HeaderText="ID d'employé" ReadOnly="True" />
<asp:BoundField DataField="firstname" HeaderText="First Name" SortExpression="firstname" />
<asp:BoundField DataField="lastname" HeaderText="Last Name" SortExpression="lastname" />
<asp:CommandField ShowEditButton="True" />
</Colonnes>
<RowStyle BackColor="#FFFFD6" ForeColor="#333333" />
<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Marine" />
<PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Centre" />
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="Blanc" />
<AlternatingRowStyle BackColor="Blanc" />
</asp:GridView>
Tout d'abord, nous devons implémenter la pagination, définir AllowPaging sur true, définir le nombre d'éléments de pagination par page, et enfin l'écrire dans codebehind
protected void GridView1_PageIndexChanging (expéditeur de l'objet, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex ;
BindGrid();
}
Afin d'obtenir un tri automatique des clics de chaque colonne, vous pouvez définir makesorting=true, puis définir OnSorting="GridView1_Sorting", où gridview_sorting
Le code est
protected void GridView1_Sorting (expéditeur de l'objet, GridViewSortEventArgs e)
{
ViewState["sortexpression"] = e.SortExpression;
if (ViewState["sortdirection"] == null)
{
ViewState["direction de tri"] = "asc";
}
autre
{
if (ViewState["sortdirection"].ToString() == "asc")
{
ViewState["direction de tri"] = "desc";
}
autre
{
ViewState["direction de tri"] = "asc";
}
}
BindGrid();
}
Évidemment, en définissant Viewate pour enregistrer l'ordre de chaque tri, je pense que ce qui précède est facile à comprendre.
Enfin, la fonction d'édition est implémentée, car OnRowEditing="GridView1_RowEditing" a été défini dans la page aspx et le code de GridView1_RowEditing est
protected void GridView1_RowUpdating (expéditeur de l'objet, GridViewUpdateEventArgs e)
{
int empide;
chaîne fname, lname ;
empid = int.Parse(GridView1.Rows[e.RowIndex].Cells[0].Text);
fname = ((TextBox)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text;
lname = ((TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text;
SqlConnection cnn = new SqlConnection (@"data source=localhost;initial catalog=northwind;user id=sa ;mot de passe=123456");
cnn.Open();
SqlCommand cmd = new SqlCommand("mettre à jour les employés définis firstname=@fname,lastname=@lname employwhereid=@empid ", cnn);
cmd.Parameters.Add(new SqlParameter("@fname",fname));
cmd.Parameters.Add(new SqlParameter("@lname", lname));
cmd.Parameters.Add(new SqlParameter("@empid", empid));
cmd.ExecuteNonQuery();
cnn.Close();
GridView1.EditIndex = -1;
BindGrid();
}
void protégé GridView1_RowEditing (expéditeur de l'objet, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex ;
BindGrid();
}
protected void GridView1_RowCancelingEdit (expéditeur de l'objet, GridViewCancelEditEventArgs e)
{
GridView1.EditIndex = -1 ;
BindGrid();
}
Comme vous pouvez le constater, le code ci-dessus est en fait le même que la version asp.net 1.1. Enfin, le processus de bindgrid() est très simple, il est contraignant
DataSetds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter("select * from Employees", @"data source=localhost;initial catalog=northwind;user id=sa;password=123456");
da.Fill(ds,"employés");
DataView dv = ds.Tables[0].DefaultView;
if (ViewState["sortexpression"] != null)
{
dv.Sort = ViewState["sortexpression"].ToString() + " " + ViewState["sortdirection"].ToString();
}
GridView1.DataSource=dv;
GridView1.DataBind();
Ici, la vue grille est liée à la vue données, et dv.sort est utilisé pour définir l'ordre de chaque tri. C'est-à-dire que l'ordre reste inchangé après chaque tri.
Bien sûr, la dernière chose est l'événement page_load.
protected void Page_Load (expéditeur de l'objet, EventArgs e)
{
si(!IsPostBack)
{
BindGrid();
}
}