广

ASP.NET

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    asp.net 2.0下一个标准GRIDVIEW功能的实现(不用datasource控件

    2018-04-08 09:04:09 次阅读 稿源:互联网
    广告

      在asp.net 2.0下,gridview是十分方便的了,加一个DATASOURCE系列的控件的话,就可以马上和gridview绑定,十分方便。但其实也可以
      使用datatable或者dataview的,这个时候就不是用datasource系列控件了。下面讲下如何在asp.net 2.0下,实现gridview控件的翻页,各列排序,
      编辑的功能。
          首先,我们读取的是northwind数据库中的employee表。放置一个gridview后,添加几个绑定的列,代码如下
       <asp:GridView ID="GridView1" runat="server" 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" OnRowCommand="GridView1_RowCommand">
                  <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
                  <Columns>
                      <asp:BoundField DataField="employeeid" HeaderText="Employee ID" ReadOnly="True" />
                      <asp:BoundField DataField="firstname" HeaderText="First Name" SortExpression="firstname" />
                      <asp:BoundField DataField="lastname" HeaderText="Last Name" SortExpression="lastname" />
                      <asp:CommandField ShowEditButton="True" />
                  </Columns>
                  <RowStyle BackColor="#FFFBD6" 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="White" />
              </asp:GridView>

      首先,我们要实现分页,把AllowPaging设置为true,并设置每页的分页条数,最后在codebehind中写入
      protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
          {
              GridView1.PageIndex = e.NewPageIndex;
              BindGrid();
          }
        为了实现每列都可以自动点击排序,可以设置allowsorting=true,然后设置OnSorting="GridView1_Sorting",其中gridview_sorting
      代码为
        protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
          {
              ViewState["sortexpression"] = e.SortExpression;

              if (ViewState["sortdirection"] == null)
              {
                  ViewState["sortdirection"] = "asc";
              }
              else
              {
                  if (ViewState["sortdirection"].ToString() == "asc")
                  {
                      ViewState["sortdirection"] = "desc";
                  }
                  else
                  {
                      ViewState["sortdirection"] = "asc";
                  }
              }
              BindGrid();
          }
      很明显,设置viewsate来保存每次排序时的顺序,上面的相信很容易理解。
           最后,实现编辑功能,因为在aspx页面中已经设置了OnRowEditing="GridView1_RowEditing",其中GridView1_RowEditing的代码为
       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;

              SqlConnection cnn = new SqlConnection(@"data source=localhost;initial catalog=northwind;user id=sa;password=123456");
              cnn.Open();
              SqlCommand cmd = new SqlCommand("update employees set firstname=@fname,lastname=@lname where employeeid=@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();
          }

        可以看到,上面的代码和asp.net 1.1版本的其实原理是差不多的。最后,bindgrid()的过程很简单,为绑定咯
      DataSet ds = new DataSet();
              SqlDataAdapter da = new SqlDataAdapter("select * from employees", @"data source=localhost;initial catalog=northwind;user id=sa;password=123456");
              da.Fill(ds,"employees");
              DataView dv = ds.Tables[0].DefaultView;

              if (ViewState["sortexpression"] != null)
              {
                  dv.Sort = ViewState["sortexpression"].ToString() + " " + ViewState["sortdirection"].ToString();
              }

              GridView1.DataSource=dv;
              GridView1.DataBind();

      这里gridview绑定的是dataview,并且用dv.sort设定了每次排序的顺序,也就是说,每次排序后其顺序都是保持不变的。
      当然最后是page_load事件咯
         protected void Page_Load(object sender, EventArgs e)
          {
              if(!IsPostBack)
              {
                  BindGrid();
              }
          }

      http://jackyrong.cnblogs.com/archive/2006/07/20/455996.html

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告