zoukankan      html  css  js  c++  java
  • 刚刚开通博客,分享Asp.Net的GridView的基本用法

    包含有

    数据的编辑,删除,

    标题的添加,自定义分页,高亮显示鼠标所在,以及数据不足时添加空行

    aspx页面代码

    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowEditing="GridView1_RowEditing" BackColor="White" BorderColor="White" BorderStyle="Ridge" BorderWidth="2px" CellPadding="3" CellSpacing="1" GridLines="None" OnRowDataBound="GridView1_RowDataBound" OnRowUpdating="GridView1_RowUpdating" Width="945px" AllowPaging="True" OnPageIndexChanged="GridView1_PageIndexChanged" OnPageIndexChanging="GridView1_PageIndexChanging" OnRowCreated="GridView1_RowCreated" OnRowDeleting="GridView1_RowDeleting" OnDataBound="GridView1_DataBound" OnRowCommand="GridView1_RowCommand">
                <Columns>
                    <asp:BoundField DataField="stuid" HeaderText="学号" />
                    <asp:BoundField DataField="stuname" HeaderText="姓名" />
                    <asp:BoundField DataField="majorid" HeaderText="专业编号" />
                    <asp:BoundField DataField="sex" HeaderText="性别" />
                    <asp:BoundField DataField="birthdate" HeaderText="出生日期" />
                    <asp:BoundField DataField="credit" HeaderText="总学分" />
                    <asp:BoundField DataField="remark" HeaderText="备注" />
                    <asp:CommandField HeaderText="操作" ShowEditButton="True" ShowDeleteButton="True" />
                </Columns>
                <FooterStyle BackColor="#C6C3C6" ForeColor="Black" />
                <HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#E7E7FF" />
                <PagerStyle BackColor="#C6C3C6" ForeColor="Black" HorizontalAlign="Right" />
                <RowStyle BackColor="#DEDFDE" ForeColor="Black" />
                <SelectedRowStyle BackColor="#9471DE" Font-Bold="True" ForeColor="White" />
                <SortedAscendingCellStyle BackColor="#F1F1F1" />
                <SortedAscendingHeaderStyle BackColor="#594B9C" />
                <SortedDescendingCellStyle BackColor="#CAC9C9" />
                <SortedDescendingHeaderStyle BackColor="#33276A" />
                <PagerTemplate>
                    <table>
                        <tr><td>
                            第<asp:Label ID="lblPageIndex" runat="server" Text="<%#((GridView)Container.Parent.Parent).PageIndex+1 %>"></asp:Label>页
                            共<asp:Label ID="lblPageCount" runat="server" Text="<%#((GridView)Container.Parent.Parent).PageCount %>"></asp:Label>页
                            <asp:LinkButton ID="btnFirst" runat="server" CausesValidation="false" CommandArgument="First" CommandName="Page">首页</asp:LinkButton>
                            <asp:LinkButton ID="btnPrev" runat="server" CausesValidation="false" CommandArgument="Prev" CommandName="Page">上一页</asp:LinkButton>
                            <asp:LinkButton ID="btnNext" runat="server" CausesValidation="false" CommandArgument="Next" CommandName="Page">下一页</asp:LinkButton>
                            <asp:LinkButton ID="btnLast" runat="server" CausesValidation="false" CommandArgument="Last" CommandName="Page">尾页</asp:LinkButton>
                            到<asp:DropDownList ID="listPageCount" runat="server" AutoPostBack="true" Width="50"></asp:DropDownList>
                            <asp:LinkButton ID="btnGo" runat="server" CausesValidation="false" CommandName="Go">Go</asp:LinkButton></td>
                        </tr>
                    </table>
                </PagerTemplate>  
            </asp:GridView>

    以下是后台代码:---------------------------------------------------------------------------------------------------------------------------------------------------------

    protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                GridView1.PageSize = 6;
                GridView1.Columns[0].Visible = false;
                GridView1.PagerSettings.Mode = PagerButtons.NumericFirstLast;
                GridView1.PagerSettings.PageButtonCount = 4;
                // 页数居中显示
                GridView1.PagerStyle.HorizontalAlign = HorizontalAlign.Center;
                DataGridBind();
            }
        }
        string connStr = ConfigurationManager.ConnectionStrings["Key"].ToString();

        // 数据绑定
        private void DataGridBind()
        {
            string sql = "select * from student";
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                SqlCommand cmd = new SqlCommand(sql,conn);
                SqlDataAdapter sda = new SqlDataAdapter(cmd);
                conn.Close();
                DataSet ds = new DataSet();
                sda.Fill(ds);
                GridView1.DataSource = ds.Tables[0];
                GridView1.DataKeyNames = new string[] { "stuid" };
                GridView1.Columns[1].ItemStyle.Width=80;
                GridView1.Columns[2].ItemStyle.Width = 80;
                GridView1.Columns[3].ItemStyle.Width = 40;
                GridView1.Columns[4].ItemStyle.Width = 200;
                GridView1.Columns[5].ItemStyle.Width = 60;
                GridView1.Columns[6].ItemStyle.Width = 250;
                GridView1.Columns[7].ItemStyle.Width = 100;
                GridView1.DataBind();
            }
        }

    // 编辑事件
        protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            GridView1.EditIndex = e.NewEditIndex;
            DataGridBind();
        }
        // 取消编辑
        protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            GridView1.EditIndex = -1;
            DataGridBind();
        }
        // 更新
        protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            string stuid = GridView1.DataKeys[e.RowIndex].Value.ToString();
            string stuname = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString();
            int majorid = Convert.ToInt32(((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString());
            string sex = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString();
            DateTime Birthdate = Convert.ToDateTime(((TextBox)(GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).Text.ToString());
            float credit = Convert.ToSingle(((TextBox)(GridView1.Rows[e.RowIndex].Cells[5].Controls[0])).Text.ToString());
            string remark = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[6].Controls[0])).Text.ToString();
            SqlConnection conn = new SqlConnection(connStr);
            SqlParameter[] paras = {new SqlParameter("@stuid",stuid),
                                    new SqlParameter("@stuname",stuname),
                                    new SqlParameter("@majorid",majorid),
                                    new SqlParameter("@sex",sex),
                                    new SqlParameter("@birthdate",Birthdate),
                                    new SqlParameter("@credit",credit),
                                    new SqlParameter("@remark",remark)};
            string sql = @"update student set stuname=@stuname,majorid=@majorid,sex=@sex,
            birthdate=@birthdate,credit=@credit,remark=@remark where stuid=@stuid";
            conn.Open();
            SqlCommand cmd = new SqlCommand(sql, conn);
            foreach (SqlParameter para in paras)
            {
                cmd.Parameters.Add(para);
            }
            cmd.ExecuteNonQuery();
            cmd.Dispose();
            conn.Close();
            GridView1.EditIndex = -1;
            DataGridBind();
        }

     // 高亮显示鼠标所在的行
        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Attributes.Add("onmouseover", "currentcolor=this.style.backgroundColor;this.style.backgroundColor='#6699ff';");
                e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=currentcolor;");
                LinkButton linBtn = (LinkButton)(e.Row.Cells[7].Controls[2]);
                if (linBtn.Text == "删除")
                {
                    linBtn.Attributes.Add("onclick", "return confirm('你确定要删除吗?')");
                }
            }
        }
        // 删除
        protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            string stuid = GridView1.DataKeys[e.RowIndex].Value.ToString();
            string sql = "delete from student where stuid=" + stuid;
            SqlConnection conn = new SqlConnection(connStr);
            SqlCommand cmd = new SqlCommand(sql, conn);
            conn.Open();
            cmd.ExecuteNonQuery();
            cmd.Dispose();
            conn.Close();
            DataGridBind();
        }

     // 分页
        protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            if (e.NewPageIndex < 0)
            {
                GridView1.PageIndex = 0;
            }
            else
            {
                GridView1.PageIndex = e.NewPageIndex;
            }
        }
        protected void GridView1_PageIndexChanged(object sender, EventArgs e)
        {
            DataGridBind();
        }

       // 行创建时
        protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
        {

            // 添加标题
            if (e.Row.RowType == DataControlRowType.Header)
            {
                GridViewRow gvr = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Normal);
                Literal lit = new Literal();
                lit.Text = @"<td colspan='6' align='center'><h2>学生信息</h2></td>";
                TableHeaderCell thc = new TableHeaderCell();
                thc.Controls.Add(lit);
                gvr.Cells.Add(thc);
                GridView1.Controls[0].Controls.AddAt(0, gvr);
            }

    // 本页行数不足添加空行
            int count = 0;
            count = GridView1.Rows.Count;
            if (e.Row.RowType == DataControlRowType.Footer)
            {
                int rowCount = GridView1.PageSize - count;
                int colCount = GridView1.Rows[0].Cells.Count;
                for (int i = 0; i < rowCount; i++)
                {
                    GridViewRow row = new GridViewRow(-1, -1, DataControlRowType.DataRow, DataControlRowState.Normal);
                    for (int j = 0; j < colCount - 1; j++)
                    {
                        TableCell cell = new TableCell();
                        cell.Text = "&nbsp";
                        row.Cells.Add(cell);
                    }
                    GridView1.Controls[0].Controls.AddAt(count +2, row);
                }
            }
        }

    // 控件被数据绑定后
        protected void GridView1_DataBound(object sender, EventArgs e)
        {
            DropDownList list = (DropDownList)GridView1.BottomPagerRow.FindControl("listPageCount");
            for (int i = 1; i <= GridView1.PageCount; i++)
            {
                ListItem item = new ListItem(i.ToString());
                if (i==GridView1.PageIndex+1)
                {
                    item.Selected = true;
                }
                list.Items.Add(item);
            }
        }
        // 响应跳转事件
        protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName=="Go")
            {
                DropDownList list = (DropDownList)GridView1.BottomPagerRow.FindControl("listPageCount");
                GridViewPageEventArgs arg = new GridViewPageEventArgs(list.SelectedIndex);
                GridView1_PageIndexChanging(null, arg);
                GridView1_PageIndexChanged(null, null);
            }
        }

  • 相关阅读:
    虚拟机操作系统文件夹空间不足解决办法——对虚拟硬盘进行分区和格式化及 挂载到某个文件夹下
    设计模式(二十一)—职责链模式(行为型)
    VMware 中添加新的虚拟磁盘的方法
    设计模式(二十二)—中介者模式(行为型)
    level of detail algorithmrendering of massive realtime terrain
    金融领域实施项目特点总结
    第35周星期日总结
    第36周星期一小结
    第32周星期二总结
    第35周星期三小结
  • 原文地址:https://www.cnblogs.com/ianunspace/p/3438233.html
Copyright © 2011-2022 走看看