Repeater06-Repeater动态添加一行

前台代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="RepeaterToAdd.aspx.cs" Inherits="RepeaterToAdd" %>

<%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <style>
        #tablePrint {
            width: 100%;
            margin-bottom: 5px;
        }

            #tablePrint, #tablePrint th, #tablePrint td {
                border: 1px solid #ccc;
                border-collapse: collapse;
                padding: 2px;
            }

                #tablePrint tr:nth-child(odd) {
                    background-color: rgb(235, 240, 255);
                }
        .btnDiv {
            padding:5px 10px 10px 10px;
        }
        .dispalyNone {
            display:none;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <div class="btnDiv">
                <asp:Button ID="btnAddNewRow" runat="server" OnClick="btnAddNewRow_Click" Text="新增" />
                <asp:Button ID="btnSave" runat="server" OnClick="btnSave_Click" Text="保存" />
            </div>
            <asp:Repeater ID="Repeater1" runat="server">
                <HeaderTemplate>
                    <table id="tablePrint" class="tbShow">
                        <tr class="th">
                            <td nowrap width="35px;" align="center">序号</td>
                            <td nowrap>学校</td>
                            <td nowrap>班级</td>
                            <td nowrap>姓名</td>
                            <td nowrap>性别</td>
                            <td nowrap>手机</td>
                            <td nowrap>邮箱</td>
                        </tr>
                </HeaderTemplate>
                <ItemTemplate>
                    <tr id="trIdrep" οnmοuseοver="this.bgColor='#C4DFF7'" οnmοuseοut="this.bgColor='#ffffff'">
                        <td nowrap>
                            <%#Container.ItemIndex+1%> 
                            <asp:Label CssClass="dispalyNone" ID="idx" runat="server" Text='<%#Eval("idx")%>'></asp:Label>
                        </td>
                        <td>
                            <asp:TextBox ID="userSchool" runat="server" Text='<%#Eval("userSchool")%>'></asp:TextBox></td>
                        <td>
                            <asp:TextBox ID="userClass" runat="server" Text='<%#Eval("userClass")%>'></asp:TextBox></td>
                        <td>
                            <asp:TextBox ID="userName" runat="server" Text='<%#Eval("userName")%>'></asp:TextBox></td>
                        <td>
                            <asp:TextBox ID="userSex" runat="server" Text='<%#Eval("userSex")%>'></asp:TextBox></td>
                        <td>
                            <asp:TextBox ID="userPhone" runat="server" Text='<%#Eval("userPhone")%>'></asp:TextBox></td>
                        <td>
                            <asp:TextBox ID="userEmail" runat="server" Text='<%#Eval("userEmail")%>'></asp:TextBox></td>
                    </tr>
                </ItemTemplate>
                <FooterTemplate>
                    </table>
                </FooterTemplate>
            </asp:Repeater>
        </div>
    </form>
</body>
</html>

后台代码:

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.Web.UI.HtmlControls;
using System.Data.SqlClient;

public partial class RepeaterToAdd : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
        {
            DataTable dt = DataBindRepeater();
            ViewState["DataTable"] = dt;
            this.Repeater1.DataSource = dt;
            this.Repeater1.DataBind();
        }
    }

    private DataTable DataBindRepeater()
    {
        string strSql = "select * from UserInfo";
        DataTable dt = SqlHelper.ExecuteDataset(CommandType.Text, strSql).Tables[0];
        return dt;
    }

    protected void btnAddNewRow_Click(object sender, EventArgs e)
    {
        DataTable dt = DataBindRepeater();
        dt.Clear();
        //首先,恢复数据源
        foreach (RepeaterItem item in Repeater1.Items)
        {
            DataRow newRow = dt.NewRow();
            newRow["idx"] = ((Label)item.FindControl("idx")).Text.ToInt32();
            newRow["userSchool"] = ((TextBox)item.FindControl("userSchool")).Text;
            newRow["userClass"] = ((TextBox)item.FindControl("userClass")).Text;
            newRow["userName"] = ((TextBox)item.FindControl("userName")).Text;
            newRow["userSex"] = ((TextBox)item.FindControl("userSex")).Text;
            newRow["userPhone"] = ((TextBox)item.FindControl("userPhone")).Text;
            newRow["userEmail"] = ((TextBox)item.FindControl("userEmail")).Text;
            dt.Rows.Add(newRow);
        }

        //添加一行
        DataRow row = dt.NewRow();
        dt.Rows.Add(row);
        //将页面中的数据缓存
        ViewState["DataTable"] = dt;

        Repeater1.DataSource = dt;
        Repeater1.DataBind();
    }
    protected void btnSave_Click(object sender, EventArgs e)
    {
        foreach (RepeaterItem item in this.Repeater1.Items)
        {
            //是否存在记录
            int userIdx = ((Label)item.FindControl("idx")).Text.ToInt32();
            int countNum = IsHaveRecord(((Label)item.FindControl("idx")).Text.ToInt32());
            if (countNum == 0)
            {
                string strSql = @"insert into UserInfo  
                                (userSchool,userClass,userName,userSex,userPhone,userEmail)  
                                values(@userSchool,@userClass,@userName,@userSex,@userPhone,@userEmail); 
                                select @@identity ;";
                int idx = SqlHelper.ExecuteScalar(CommandType.Text, strSql
                            , new SqlParameter("@userSchool", ((TextBox)item.FindControl("userSchool")).Text)
                            , new SqlParameter("@userClass", ((TextBox)item.FindControl("userClass")).Text)
                            , new SqlParameter("@userName", ((TextBox)item.FindControl("userName")).Text)
                            , new SqlParameter("@userSex", ((TextBox)item.FindControl("userSex")).Text)
                            , new SqlParameter("@userPhone", ((TextBox)item.FindControl("userPhone")).Text)
                            , new SqlParameter("@userEmail", ((TextBox)item.FindControl("userEmail")).Text)
                ).ToInt32();
            }
            else
            {
                string strSql = @"update UserInfo 
                                set userSchool=@userSchool,userClass=@userClass,userName=@userName,userSex=@userSex,
                                userPhone=@userPhone,userEmail=@userEmail
                                where idx=@idx";
                int rows = SqlHelper.ExecuteNonQuery(CommandType.Text, strSql
                            , new SqlParameter("@userSchool", ((TextBox)item.FindControl("userSchool")).Text)
                            , new SqlParameter("@userClass", ((TextBox)item.FindControl("userClass")).Text)
                            , new SqlParameter("@userName", ((TextBox)item.FindControl("userName")).Text)
                            , new SqlParameter("@userSex", ((TextBox)item.FindControl("userSex")).Text)
                            , new SqlParameter("@userPhone", ((TextBox)item.FindControl("userPhone")).Text)
                            , new SqlParameter("@userEmail", ((TextBox)item.FindControl("userEmail")).Text)
                            , new SqlParameter("idx", ((Label)item.FindControl("idx")).Text.ToInt32())
                );
            }
        }
        Cmn.Js.AlertToUrl("操作成功", "RepeaterToAdd.aspx");
    }

    private int IsHaveRecord(int idx)
    {
        string sql = "select count(0) from UserInfo where idx=@idx";
        int countNum = SqlHelper.ExecuteScalar(CommandType.Text, sql, new SqlParameter("@idx", idx)).ToInt32();
        if (countNum == 0)
        {
            return 0;
        }
        else
        {
            return 1;
        }

    }
}

页面展示:




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值