• Repeater增删改查(内嵌checkbox)版本


    基础知识比较重要为了巩固以前所学习的,在此篇博客中主要描述了下以前repeater中常用的一些增删改查,更主要的是为了利用Jquery完成全选批量删除的功能,代码十分简单也没使用存储过程,欢迎提出您的见解和意见谢谢~此文只为分享学习~

    前台Default.aspx

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="RepeaterDemo._Default" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
        <title>Repeater增删改查实例(内嵌Checkbox版)</title>
        <style type="text/css">
            tr td span
            {
                font-family: @宋体, Arial;
                font-size: small;
                color: Gray;
            }
            tr td
            {
                100px;
                text-align: center;
            }
        </style>
        <%--<script src="Jquery/jquery-1.4.min.js" type="text/javascript" language="javascript"></script>--%>

        <script src="Jquery/jquery-1.4.2-vsdoc.js" type="text/javascript" language="javascript"></script>

        <script language="javascript" type="text/javascript">
            $(document).ready(function() {
                $("tr[id='repeaterTr']").each(function() {
                    $(this).mouseover(function() {
                        $(this).css("background-color", "#77DDFF");
                    })
                    $(this).mouseout(function() {
                        $(this).css("background-color", "#FFFFFF");
                    });
                });
                //toggle用于切换2个函数
                $("#btnCheckAll").toggle(function() {
                    if ($("#btnCheckAll").html() == "全选") {
                        $("#btnCheckAll").click(function() {
                            $(this).html("反选");
                            $("input[name='product']").each(function() {
                                if ($(this).attr("checked", false)) {
                                    $(this).attr("checked", true);
                                }
                            })
                        })
                    }
                }, function() {
                    if ($("#btnCheckAll").html() == "反选") {
                        $("#btnCheckAll").click(function() {
                            $(this).html("全选");
                            $("input[name='product']").each(function() {
                                if ($(this).attr("checked", true)) {
                                    $(this).attr("checked", false);
                                }
                            })
                        })
                    }
                })
            })

            function TransformIDs() {
                var checkedArray = new Array();
                $("input[name='product']").each(function() {
                    if ($(this).attr("checked") == true) {
                        checkedArray.push($(this).val());
                    }
                })
                $("#checkedIds").get(0).value = checkedArray.join(';');
            }
        </script>

    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <div align="center">
                repeater实例</div>
            <input type="hidden" runat="server" id="checkedIds" />
            <table border="1" style=" 600px; border-style: solid; border-collapse: collapse"
                align="center">
                <tr>
                    <td>
                        <button id="btnCheckAll" type="button" value="checkAll" style="border-style: solid">
                            全选</button>
                    </td>
                    <td>
                        <span>序号</span>
                    </td>
                    <td>
                        <span>商品名</span>
                    </td>
                    <td>
                        <span>单价</span>
                    </td>
                    <td>
                        <span>简介</span>
                    </td>
                    <td>
                        <span>订购日期</span>
                    </td>
                    <td>
                        <span>操作</span>
                    </td>
                </tr>
                <asp:Repeater ID="rpProduct" runat="server" OnItemCommand="rpProduct_ItemCommand">
                    <ItemTemplate>
                        <tr id="repeaterTr">
                            <td>
                                <input type="checkbox" id="chkDelete" name="product" value='<%#Eval("ProductID") %>' />
                            </td>
                            <td>
                                <%#Container.ItemIndex + 1%>
                            </td>
                            <td>
                                <%#Eval("ProductName")%>
                            </td>
                            <td>
                                <%#Eval("UnitPrice", "{0:C}")%>
                            </td>
                            <td>
                                <%#Eval("Description")%>
                            </td>
                            <td>
                                <%#Eval("CreateTime")%>
                            </td>
                            <td>
                                <asp:LinkButton ID="lkbtnEdit" runat="server" Text="编辑" ToolTip="编辑" CommandName="Edit"
                                    CommandArgument='<%#Eval("ProductID") %>' Font-Size="Small"></asp:LinkButton>
                            </td>
                        </tr>
                    </ItemTemplate>
                </asp:Repeater>
            </table>
            <table border="1" style=" 600px; border-style: solid; border-collapse: collapse"
                align="center">
                <tr>
                    <td align="center">
                        <span>商品名</span>
                    </td>
                    <td align="center">
                        <span>单价</span>
                    </td>
                    <td align="center">
                        <span>简介</span>
                    </td>
                </tr>
                <tr>
                    <td style=" 200px" align="center">
                        <asp:TextBox ID="txtProductName" runat="server" Width="200px"></asp:TextBox>
                    </td>
                    <td style=" 200px" align="center">
                        <asp:TextBox ID="txtUnitPrice" runat="server" Width="200px"></asp:TextBox>
                    </td>
                    <td style=" 200px" align="center">
                        <asp:TextBox ID="txtDescription" runat="server" Width="200px"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td colspan="3" align="center">
                        <asp:Button ID="btnAdd" runat="server" Text="添加" OnClick="btnAdd_Click" BorderStyle="Solid" />
                        <asp:Button ID="btnDelete" runat="server" Text="删除" OnClick="btnDelete_Click" BorderStyle="Solid"
                            OnClientClick="TransformIDs()" />
                    </td>
                </tr>
            </table>
        </div>
        </form>
    </body>
    </html>

    后台Default.aspx.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data.SqlClient;
    using System.Configuration;
    using System.Data;
    using System.Text.RegularExpressions;

    namespace RepeaterDemo
    {
        /// <summary>
        /// 简化例子没有分层与使用存储过程
        /// </summary>
        public partial class _Default : BasePage
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    RepeatDataBind();
                }
            }
            /// <summary>
            /// repeater控件数据绑定
            /// </summary>
            private void RepeatDataBind()
            {
                rpProduct.DataSource = GetProduct().Tables["Product"];
                rpProduct.DataBind();
            }
            /// <summary>
            /// 添加新商品记录
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            protected void btnAdd_Click(object sender, EventArgs e)
            {
                bool flag = InsertNewProduct();
                if (flag)
                {
                    Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('添加成功!')</script>");
                    RepeatDataBind();
                    ClearData(this.Page.Controls);
                }
                else
                {
                    Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('添加失败发生异常!')</script>");
                    return;
                }
            }
            /// <summary>
            /// 返回结果
            /// </summary>
            /// <returns></returns>
            private DataSet GetProduct()
            {
                string connectionString = ConfigurationManager.ConnectionStrings["SqlConnectionString"].ConnectionString;
                SqlConnection conn = new SqlConnection(connectionString);
                SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Product", conn);
                DataSet ds = new DataSet();
                da.Fill(ds, "Product");
                return ds;
            }
            /// <summary>
            /// 插入新记录
            /// </summary>
            /// <returns></returns>
            private bool InsertNewProduct()
            {
                bool flag = false;
                Regex regx = new Regex(@"^/d+$");
                if (!regx.IsMatch(txtUnitPrice.Text.Trim()))
                {
                    Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('您输入的不是数字请重新输入!')</script>");
                    return false;
                }
                string connectionString = ConfigurationManager.ConnectionStrings["SqlConnectionString"].ConnectionString;
                SqlConnection conn = new SqlConnection(connectionString);
                SqlCommand cmd = new SqlCommand(@"INSERT INTO Product (ProductName, UnitPrice, Description, CreateTime) VALUES (@ProductName, @UnitPrice, @Description, @CreateTime)", conn);
                cmd.Parameters.Add("@ProductName", SqlDbType.NVarChar, 1000).Value = txtProductName.Text.Trim();
                cmd.Parameters.Add("@UnitPrice", SqlDbType.Decimal, int.MaxValue).Value = Convert.ToDecimal(txtUnitPrice.Text.Trim());
                cmd.Parameters.Add("@Description", SqlDbType.Text, int.MaxValue).Value = txtDescription.Text.Trim();
                cmd.Parameters.Add("@CreateTime", SqlDbType.DateTime, int.MaxValue).Value = DateTime.Now;
                try
                {
                    conn.Open();
                    int result = cmd.ExecuteNonQuery();
                    flag = result == 0 ? false : true;
                }
                catch (Exception)
                {

                }
                finally
                {
                    conn.Close();
                }
                return flag;
            }
            /// <summary>
            /// 删除记录
            /// </summary>
            /// <param name="productID"></param>
            /// <returns></returns>
            private bool DeleteProduct(int productID)
            {
                bool flag = false;
                string connectionString = ConfigurationManager.ConnectionStrings["SqlConnectionString"].ConnectionString;
                SqlConnection conn = new SqlConnection(connectionString);
                SqlCommand cmd = new SqlCommand(@"DELETE FROM Product WHERE ProductID = @ProductID", conn);
                cmd.Parameters.Add("@ProductID", SqlDbType.Int, int.MaxValue).Value = productID;
                try
                {
                    conn.Open();
                    int result = cmd.ExecuteNonQuery();
                    flag = result == 0 ? false : true;
                }
                catch (Exception)
                {

                }
                finally
                {
                    conn.Close();
                }
                return flag;
            }

            /// <summary>
            /// 批量删除可以用 DELETE FROM TestTable WHERE ID IN (1, 3, 54, 68)  --sql2005下运行通过
            /// 批量插入可以用
            /// sql写法:    INSERT INTO TestTable SELECT 1, 'abc' UNION SELECT  2, 'bcd'  UNION SELECT 3, 'cde'       --TestTable表没有主键,ID不是主键   
            /// oracle写法:    INSERT INTO TestTable SELECT 1, 'abc' From daul UNION SELECT  2, 'bcd' From daul        --TestTable表没有主键,ID不是主键
            /// </summary>
            /// <param name="productIDs"></param>
            /// <returns></returns>
            private bool DeleteProduct(string[] productIDs)
            {
                bool flag = false;
                string delSqlIds = string.Empty;
                string connectionString = ConfigurationManager.ConnectionStrings["SqlConnectionString"].ConnectionString;
                SqlConnection conn = new SqlConnection(connectionString);
                for (int i = 0; i < productIDs.Length; i++)
                {
                    delSqlIds += productIDs[i] + ", ";
                }
                delSqlIds = delSqlIds.Substring(0, delSqlIds.LastIndexOf(","));
                SqlCommand cmd = new SqlCommand(@"DELETE FROM Product WHERE ProductID in (" + delSqlIds + ")", conn);
                try
                {
                    conn.Open();
                    int result = cmd.ExecuteNonQuery();
                    flag = result == 0 ? false : true;
                }
                catch (Exception)
                {

                }
                finally
                {
                    conn.Close();
                }
                return flag;
            }

            protected void rpProduct_ItemCommand(object source, RepeaterCommandEventArgs e)
            {
                string commandName = e.CommandName;
                int productID = Convert.ToInt32(e.CommandArgument);
                if (commandName == "Edit")
                {
                    Response.Redirect("EditProduct.aspx?Id=" + productID);
                }
            }

            protected void btnDelete_Click(object sender, EventArgs e)
            {
                string[] ids = checkedIds.Value.Split(';');
                bool flag = DeleteProduct(ids);
                if (flag)
                {
                    Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('删除成功!')</script>");
                    RepeatDataBind();
                }
                else
                {
                    Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('删除失败发生异常!')</script>");
                    return;
                }
            }

        }
    }

    前台 EditProduct.aspx

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="EditProduct.aspx.cs" Inherits="RepeaterDemo.EditProduct" %>

    <%@ Register Src="EditProductCtrl.ascx" TagName="EditProductCtrl" TagPrefix="uc1" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <table border="1" style=" 600px; border-style: solid; border-collapse: collapse"
            align="center">
            <tr>
                <td align="center">
                    <uc1:EditProductCtrl ID="EditProductCtrl1" runat="server" />
                </td>
            </tr>
            <tr>
                <td colspan="3" align="center">
                    <asp:Button ID="btnEdit" runat="server" Text="编辑" OnClick="btnEdit_Click" BorderStyle="Solid" />
                    <asp:Button ID="btnReturn" runat="server" Text="返回" OnClick="btnReturn_Click" BorderStyle="Solid" />
                </td>
            </tr>
        </table>
        </form>
    </body>
    </html>

    后台 EditProduct.aspx.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data;
    using System.Data.SqlClient;
    using System.Configuration;
    using Model;
    using System.Text.RegularExpressions;

    namespace RepeaterDemo
    {
        public partial class EditProduct : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    int productID = int.Parse(Request.QueryString["Id"]);
                    PageInit(productID);
                    ViewState["ProductID"] = productID;
                }
            }

            protected void btnEdit_Click(object sender, EventArgs e)
            {
                int productID = Convert.ToInt32(ViewState["ProductID"]);
                bool flag = EditCurrentProduct(productID);
                if (flag)
                {
                    Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('更新成功!');document.location.href='Default.aspx'< /script>");
                }
                else
                {
                    Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('更新失败发生异常!');document.location.href='Default.aspx'& lt;/script>");
                    return;
                }
            }

            protected void btnReturn_Click(object sender, EventArgs e)
            {
                Response.Redirect("Default.aspx");
            }

            private void PageInit(int productID)
            {
                Product currentProduct = GetCurrentProduct(productID);
                this.EditProductCtrl1.ProductName = currentProduct.ProductName;
                this.EditProductCtrl1.UnitPrice = currentProduct.UnitPrice;
                this.EditProductCtrl1.Description = currentProduct.Decription;
            }
            /// <summary>
            /// 取得当前修改对象
            /// </summary>
            /// <returns></returns>
            private Product GetCurrentProduct(int productID)
            {
                string connectionString = ConfigurationManager.ConnectionStrings["SqlConnectionString"].ConnectionString;
                SqlConnection conn = new SqlConnection(connectionString);
                SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Product WHERE ProductID = @ProductID", conn);
                da.SelectCommand.Parameters.Add("@ProductID", SqlDbType.Int, int.MaxValue).Value = productID;
                DataSet ds = new DataSet();
                da.Fill(ds, "Product");
                Product currentProduct = new Product();
                currentProduct.ProductID = ds.Tables["Product"].Rows[0]["ProductID"] == null ? 0 : Convert.ToInt32(ds.Tables["Product"].Rows[0]["ProductID"]);
                currentProduct.ProductName = ds.Tables["Product"].Rows[0]["ProductName"] == null ? string.Empty : (ds.Tables["Product"].Rows[0]["ProductName"]).ToString();
                currentProduct.UnitPrice = ds.Tables["Product"].Rows[0]["UnitPrice"] == null ? 0 : Convert.ToDecimal(ds.Tables["Product"].Rows[0]["UnitPrice"]);
                currentProduct.Decription = ds.Tables["Product"].Rows[0]["Description"] == null ? string.Empty : (ds.Tables["Product"].Rows[0]["Description"]).ToString();
                currentProduct.CreateTime = ds.Tables["Product"].Rows[0]["CreateTime"] == null ? DateTime.Now : Convert.ToDateTime(ds.Tables["Product"].Rows[0]["CreateTime"]);
                return currentProduct;
            }
            /// <summary>
            /// 更新当前对象
            /// </summary>
            /// <param name="productID"></param>
            /// <returns></returns>
            private bool EditCurrentProduct(int productID)
            {
                bool flag = false;
                if (this.EditProductCtrl1.UnitPrice == 0)
                {
                    Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('您输入的不是数字请重新输入,格式不正确!')</script>");
                    return false;
                }
                string connectionString = ConfigurationManager.ConnectionStrings["SqlConnectionString"].ConnectionString;
                SqlConnection conn = new SqlConnection(connectionString);
                SqlCommand cmd = new SqlCommand(@"UPDATE Product SET ProductName = @ProductName, UnitPrice = @UnitPrice, Description = @Description WHERE ProductID = @ProductID", conn);
                cmd.Parameters.Add("@ProductName", SqlDbType.NVarChar, 1000).Value = this.EditProductCtrl1.ProductName;
                cmd.Parameters.Add("@UnitPrice", SqlDbType.Decimal, int.MaxValue).Value = this.EditProductCtrl1.UnitPrice;
                cmd.Parameters.Add("@Description", SqlDbType.Text, int.MaxValue).Value = this.EditProductCtrl1.Description;
                cmd.Parameters.Add("@ProductID", SqlDbType.Int, int.MaxValue).Value = productID;
                try
                {
                    conn.Open();
                    int result = cmd.ExecuteNonQuery();
                    flag = result == 0 ? false : true;
                }
                catch (Exception)
                {

                }
                finally
                {
                    conn.Close();
                }
                return flag;
            }
        }
    }

    用户控件前台 EditProductCtrl.ascx

    <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="EditProductCtrl.ascx.cs"
        Inherits="RepeaterDemo.EditProductCtrl" %>
    <table border="1" style=" 600px; border-style: solid; border-collapse: collapse"
        align="center">
        <tr>
            <td align="center">
                <span>商品名</span>
            </td>
            <td align="center">
                <span>单价</span>
            </td>
            <td align="center">
                <span>商品描述</span>
            </td>
        </tr>
        <tr>
            <td style=" 200px" align="center">
                <asp:TextBox ID="txtProductName" runat="server" Width="200px"></asp:TextBox>
            </td>
            <td style=" 200px" align="center">
                <asp:TextBox ID="txtUnitPrice" runat="server" Width="200px"></asp:TextBox>
            </td>
            <td style=" 200px" align="center">
                <asp:TextBox ID="txtDescription" runat="server" Width="200px"></asp:TextBox>
            </td>
        </tr>
        </table>

    用户控件后台 EditProductCtrl.ascx.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Text.RegularExpressions;

    namespace RepeaterDemo
    {
        public partial class EditProductCtrl : System.Web.UI.UserControl
        {
            protected void Page_Load(object sender, EventArgs e)
            {

            }
            /// <summary>
            /// 商品名
            /// </summary>
            public string ProductName
            {
                get { return txtProductName.Text; }
                set { txtProductName.Text = value; }
            }
            /// <summary>
            /// 商品单价
            /// </summary>
            public decimal UnitPrice
            {
                get
                {
                    Regex regx = new Regex(@"^/d+$");
                    string unitPrice = txtUnitPrice.Text.Trim();
                    if (unitPrice.Contains("."))
                    {
                        unitPrice = unitPrice.Substring(0, unitPrice.IndexOf("."));
                        return regx.IsMatch(unitPrice) ? Convert.ToDecimal(unitPrice) : 0;
                    }
                    else
                    {
                        return regx.IsMatch(unitPrice) ? Convert.ToDecimal(unitPrice) : 0;
                    }
                }
                set { txtUnitPrice.Text = value.ToString(); }
            }
            /// <summary>
            /// 商品描述
            /// </summary>
            public string Description
            {
                get { return txtDescription.Text; }
                set { txtDescription.Text = value; }
            }
        }
    }

  • 相关阅读:
    rsync 配置
    DNS主从服务,子域授权,view视图,日志系统,压力测试
    ubuntu VNC server 黑屏 yum源更新(ubuntu16.04)
    HTTPD服务 openssl的https服务机制
    vmware Esxi 更换管理网卡IP
    httpd 虚拟主机建立之访问机制及其日志定义
    pxe kickstart 配置+TFTP+NFS多版本系统部署
    Linux nohup不输出日志文件的方法
    Tomcat部署时war和war exploded区别
    vim编辑超大文件
  • 原文地址:https://www.cnblogs.com/blogzys/p/2398342.html
Copyright © 2020-2023  润新知