No asp.net 2.0, o gridview é muito conveniente. Se você adicionar um controle da série DATASOURCE, poderá vinculá-lo imediatamente ao gridview, o que é muito conveniente. Mas, na verdade, você também pode usar datatable ou dataview. Neste momento, você não usará os controles da série de fontes de dados. Vamos falar sobre como realizar a virada de página e classificação de cada coluna no controle gridview no asp.net 2.0.
Função de edição.
Primeiro, lemos a tabela de funcionários no banco de dados Northwind. Depois de colocar um gridview, adicione várias colunas vinculadas, o código é o seguinte
<asp:GridView ID="GridView1" runat="servidor" AllowPaging="True" AllowSorting="True"
AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333" GridLines="None"
Width = "100%" DataKeyNames = "EmployeeID" OnPageIndexChanging = "GridView1_PageIndexChanging" OnRowEditing = "GridView1_RowEditing" OnRowUpdating = "GridView1_RowUpdating" OnSorting = "GridView1_Sorting" PageSize = "3" OnRowCancelingEdit = "GridView1_RowCancelingEdit" ="G ridView1_RowCommand">
<FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<Colunas>
<asp:BoundField DataField="employeeid" HeaderText="ID do funcionário" ReadOnly="True" />
<asp:BoundField DataField="nome" HeaderText="Nome" SortExpression="nome" />
<asp:BoundField DataField="sobrenome" HeaderText="Sobrenome" SortExpression="sobrenome" />
<asp:CommandField ShowEditButton="True" />
</Colunas>
<RowStyle BackColor="#FFFFD6" ForeColor="#333333" />
<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
<PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="Branco" />
</asp:GridView>
Primeiro, precisamos implementar a paginação, definir AllowPaging como true e definir o número de itens de paginação por página e, finalmente, escrevê-lo em codebehind
void protegido GridView1_PageIndexChanging (remetente do objeto, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
BindGrid();
}
Para obter a classificação automática por clique de cada coluna, você pode definiralloworting=true e, em seguida, definir OnSorting="GridView1_Sorting", onde gridview_sorting
O código é
void protegido GridView1_Sorting (remetente do objeto, GridViewSortEventArgs e)
{
ViewState["sortexpression"] = e.SortExpression;
if (ViewState["sortdirection"] == null)
{
ViewState["sortdirection"] = "asc";
}
outro
{
if (ViewState["sortdirection"].ToString() == "asc")
{
ViewState["sortdirection"] = "desc";
}
outro
{
ViewState["sortdirection"] = "asc";
}
}
BindGrid();
}
Obviamente, configurando o viewate para salvar a ordem de cada classificação, acredito que o acima é fácil de entender.
Finalmente, a função de edição é implementada, porque OnRowEditing="GridView1_RowEditing" foi definido na página aspx e o código de GridView1_RowEditing é
void protegido GridView1_RowUpdating (remetente do objeto, GridViewUpdateEventArgs e)
{
int épico;
string fnome, lnome;
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;Text
;user id=sa ;senha=123456");
cnn.Open();
SqlCommand cmd = new SqlCommand("atualizar funcionários definidos nome = @fnome, sobrenome = @lnome funcionário ondeid = @empid ", cnn);
cmd.Parameters.Add(new SqlParameter("@fname",fname));
cmd.Parameters.Add(new SqlParameter("@lnome", lnome));
cmd.Parameters.Add(new SqlParameter("@empid", empid));
cmd.ExecuteNonQuery();
cnn.Close()
;
BindGrid();
}
void protegido GridView1_RowEditing (remetente do objeto, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
BindGrid();
}
void protegido GridView1_RowCancelingEdit (remetente do objeto, GridViewCancelEditEventArgs e)
{
GridView1.EditIndex = -1;
BindGrid();
}
Como você pode ver, o código acima é na verdade igual à versão 1.1 do asp.net. Finalmente, o processo de bindgrid() é muito simples, é vinculativo
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter("selecionar * dos funcionários", @"fonte de dados=localhost;catálogo inicial=northwind;id do usuário=sa;senha=123456");
da.Fill(ds,"funcionários");
DataView dv = ds.Tables[0].DefaultView
if (ViewState["sortexpression"] != null)
{
dv.Sort = ViewState["sortexpression"].ToString() + " " + ViewState["sortdirection"].ToString();
}
GridView1.DataSource=dv;
GridView1.DataBind();
Aqui o gridview está vinculado ao dataview e dv.sort é usado para definir a ordem de cada classificação.
Claro, a última coisa é o evento page_load.
protegido void Page_Load (remetente do objeto, EventArgs e)
{
if(!IsPostBack)
{
BindGrid();
}
}