En asp.net 2.0, gridview es muy conveniente. Si agrega un control de la serie DATASOURCE, puede vincularlo inmediatamente a gridview, lo cual es muy conveniente. Pero, de hecho, también puede utilizar datatable o dataview. En este momento, no utilizará los controles de la serie de fuentes de datos. Hablemos sobre cómo pasar páginas y ordenar cada columna en el control gridview en asp.net 2.0.
Función de edición.
Primero, leemos la tabla de empleados en la base de datos Northwind. Después de colocar un gridview, agregue varias columnas enlazadas, el código es el siguiente
Ancho="100%" DataKeyNames="EmployeeID" OnPageIndexChanging="GridView1_PageIndexChanging" OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating" OnSorting="GridView1_Sorting" PageSize="3" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowCommand="G 1_RowCommand">
Primero, debemos implementar la paginación, configurar AllowPaging en verdadero, establecer la cantidad de elementos de paginación por página y, finalmente, escribirlo en código subyacente.
vacío protegido GridView1_PageIndexChanging (remitente del objeto, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
VincularGrid();
}
Para lograr la clasificación automática de clics de cada columna, puede configurar Allowsorting = true y luego configurar OnSorting="GridView1_Sorting", donde gridview_sorting
El código es
vacío protegido GridView1_Sorting (remitente del objeto, GridViewSortEventArgs e)
{
ViewState["sortexpression"] = e.SortExpression;
if (ViewState["sortdirection"] == nulo)
{
ViewState["sortdirection"] = "asc";
}
demás
{
if (ViewState["sortdirection"].ToString() == "asc")
{
ViewState["sortdirection"] = "desc";
}
demás
{
ViewState["sortdirection"] = "asc";
}
}
VincularGrid();
}
Obviamente, al configurar viewsate para guardar el orden de cada clasificación, creo que lo anterior es fácil de entender.
Finalmente, se implementa la función de edición, porque OnRowEditing="GridView1_RowEditing" se ha configurado en la página aspx y el código de GridView1_RowEditing es
vacío protegido GridView1_RowUpdating (remitente del objeto, GridViewUpdateEventArgs e)
{
empido int;
cadena fname, lname;
empid = int.Parse(GridView1.Rows[e.RowIndex].Cells[0].Text);
fname = ((TextBox)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Texto;
lname = ((TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text;
SqlConnection cnn = new SqlConnection(@"data source=localhost;initial catalog=northwind;user id=sa ;contraseña=123456");
cnn.Open();
SqlCommand cmd = new SqlCommand("actualizar el conjunto de empleados nombre=@fname,apellido=@lname empleado dondeid=@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;
VincularGrid();
}
vacío protegido GridView1_RowEditing (remitente del objeto, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
VincularGrid();
}
vacío protegido GridView1_RowCancelingEdit (remitente del objeto, GridViewCancelEditEventArgs e)
{
GridView1.EditIndex = -1;
VincularGrid();
}
Como puede ver, el código anterior es en realidad el mismo que el de la versión asp.net 1.1. Finalmente, el proceso de bindgrid() es muy simple, es vinculante
Conjunto de datos ds = nuevo Conjunto de datos();
SqlDataAdapter da = new SqlDataAdapter("seleccione * de los empleados", @"fuente de datos=localhost;catálogo inicial=northwind;id de usuario=sa;contraseña=123456");
da.Fill(ds,"empleados");
DataView dv = ds.Tables[0].DefaultView
if (ViewState["sortexpression"]! = nulo)
{
dv.Sort = ViewState["sortexpression"].ToString() + " " + ViewState["sortdirection"].ToString();
}
GridView1.DataSource=dv;
GridView1.DataBind();
Aquí la vista de cuadrícula está vinculada a la vista de datos y dv.sort se usa para establecer el orden de cada clasificación, es decir, el orden permanece sin cambios después de cada clasificación.
Por supuesto, lo último es el evento page_load.
Page_Load vacío protegido (remitente del objeto, EventArgs e)
{
si(!IsPostBack)
{
VincularGrid();
}
}