Unter asp.net 2.0 ist Gridview sehr praktisch. Wenn Sie ein DATASOURCE-Seriensteuerelement hinzufügen, können Sie es sofort an die Gridview binden, was sehr praktisch ist. Tatsächlich können Sie jedoch auch Datentabellen oder Datenansichten verwenden. Zu diesem Zeitpunkt werden Sie die Datenquellenseriensteuerelemente nicht verwenden. Lassen Sie uns darüber sprechen, wie Sie das Umblättern und Sortieren jeder Spalte im Gridview-Steuerelement unter asp.net 2.0 realisieren.
Bearbeitungsfunktion.
Zuerst lesen wir die Mitarbeitertabelle in der Northwind-Datenbank. Fügen Sie nach dem Platzieren einer Rasteransicht mehrere gebundene Spalten hinzu. Der Code lautet wie folgt
Breite = „100 %“ DataKeyNames = „EmployeeID“ OnPageIndexChanging = „GridView1_PageIndexChanging“ OnRowEditing = „GridView1_RowEditing“ OnRowUpdating = „GridView1_RowUpdating“ OnSorting = „GridView1_Sorting“ PageSize = „3“ OnRowCancelingEdit = „GridView1_RowCancelingEdit“ OnRowCommand = „G 1_RowCommand">
Zuerst müssen wir Paging implementieren, AllowPaging auf true setzen, die Anzahl der Paging-Elemente pro Seite festlegen und es schließlich in CodeBehind schreiben
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
BindGrid();
}
Um eine automatische Klicksortierung jeder Spalte zu erreichen, können Sie Allowsorting = True und dann OnSorting = „GridView1_Sorting“ festlegen, wobei Gridview_Sorting gilt
Der Code ist
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
ViewState["sortexpression"] = e.SortExpression;
if (ViewState["sortdirection"] == null)
{
ViewState["sortdirection"] = "asc";
}
anders
{
if (ViewState["sortdirection"].ToString() == "asc")
{
ViewState["sortdirection"] = "desc";
}
anders
{
ViewState["sortdirection"] = "asc";
}
}
BindGrid();
}
Offensichtlich ist es meiner Meinung nach leicht zu verstehen, Viewsate so festzulegen, dass die Reihenfolge jeder Sortierung gespeichert wird.
Schließlich wird die Bearbeitungsfunktion implementiert, da OnRowEditing="GridView1_RowEditing" auf der ASPX-Seite festgelegt wurde und der Code von GridView1_RowEditing festgelegt ist
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
int empid;
string 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;
new SqlConnection(@"data source=localhost;initial Catalog=northwind;user id=sa ;passwort=123456");
cnn.Open();
SqlCommand cmd = new SqlCommand("Mitarbeiter aktualisieren setzen Vorname=@fname, Nachname=@lname Mitarbeiter, wobei ID=@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();
}
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
BindGrid();
}
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
GridView1.EditIndex = -1;
BindGrid();
}
Wie Sie sehen können, ist der obige Code tatsächlich derselbe wie die asp.net 1.1-Version. Schließlich ist der Prozess von bindgrid() sehr einfach, er ist bindend
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter("select * from forces", @"data source=localhost;initial Catalog=northwind;user id=sa;password=123456");
da.Fill(ds,"mitarbeiter");
DataView dv = ds.Tables[0].DefaultView;
if (ViewState["sortexpression"] != null)
{
dv.Sort = ViewState["sortexpression"].ToString() + " " + ViewState["sortdirection"].ToString();
}
GridView1.DataSource=dv;
GridView1.DataBind();
Hier ist die Gridview an die Datenansicht gebunden und dv.sort wird verwendet, um die Reihenfolge jeder Sortierung festzulegen. Das heißt, die Reihenfolge bleibt nach jeder Sortierung unverändert.
Das Letzte ist natürlich das page_load-Ereignis.
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
BindGrid();
}
}