Repeater的查询,添加,修改,删除 -----仅供参考;(有不足之处希望大家多多提意见)
首先在创建项目中创建ASP.NET空网站 ,进入网站时创建两个web窗体分别为RepeaterUserInfo.aspx,ReperUpdate.aspx;接下来在RepeaterUserInfo.aspx的前台页面中开始拉repeater的控件;写前台的代码,代码块如下`
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="RepeaterUserInfo.aspx.cs" Inherits="RepeaterUserInfo" %>
<!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>
</head>
<body>
<form id="form1" runat="server">
<div>
<table style="width: 429px">
<tr>
<td>姓名</td>
<td>年龄</td>
<td>操作</td>
</tr>
<asp:Repeater ID="rptStudent" runat="server" OnItemCommand="rptStudent_ItemCommand">
<ItemTemplate>
<tr>
<td><%#Eval("Name") %></td>
<td><%#Eval("Age") %></td>
<td>
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="delete">删除</asp:LinkButton>
<asp:LinkButton ID="LinkButton2" runat="server" CommandName="update">更新</asp:LinkButton>
<asp:HiddenField ID="HiddenField1" runat="server" Value='<%#Eval("Id") %>' />
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
<p>姓名:<asp:TextBox ID="txtName" runat="server"></asp:TextBox></p>
<p>年龄:<asp:TextBox ID="txtAge" runat="server"></asp:TextBox></p>
<p>
<asp:Button ID="btnInsert" runat="server" Text="添加" OnClick="btnInsert_Click" />
</p>
</div>
</form>
</body>
</html>
从源点设计看到的页面如下;
后台的代码如下
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class RepeaterUserInfo : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
StudentsInit();
}
}
string strConn = "server=(local);database=Student;uid=sa;pwd=localhost;";
public void StudentsInit()
{
SqlConnection conn = new SqlConnection(strConn);
string sql = "select * from Students";
SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
sda.Fill(ds);
rptStudent.DataSource = ds;
rptStudent.DataBind();
}
//rpt的行点击事件
protected void rptStudent_ItemCommand(object source, RepeaterCommandEventArgs e)
{
//之前不知道你点击的是谁?给每一个按钮都加了一个不同的命令名
if (e.CommandName == "delete")
{
//删除
//1获取当前点击行 e表示当前点击行
//2获取当前点击行的隐藏控件值
//FindControl()根据主键查找服务器控件
//获取当前点击行,根据ID查找服务器控件,指定控件的类型,获取控件的值 并且将值转化为int类型
int id = Convert.ToInt32((e.Item.FindControl("HiddenField1") as HiddenField).Value);
string sql = "delete from Students where Id='" + id + "'";
SqlConnection conn = new SqlConnection(strConn);
SqlCommand cmd=new SqlCommand (sql, conn);
conn.Open();
int flag = cmd.ExecuteNonQuery();
conn.Close();
if (flag > 0)
{
StudentsInit();
Response.Write("<script>alert('删除成功')</script>");
}
else
{
Response.Write("<script>alert('删除失败')</script>");
}
}
//更新
//页面重定向 页面跳转
//url传值 以键值对 key=value key表示键 是自己随便起的 value表示值 传递的数据
if (e.CommandName=="update")
{
int ids = Convert.ToInt32((e.Item.FindControl("HiddenField1") as HiddenField).Value);
Response.Redirect("ReperUpdate.aspx?mykey=" + ids + " ");
}
}
protected void btnInsert_Click(object sender, EventArgs e)
{
string name = txtName.Text.Trim();
string age = txtAge.Text.Trim();
string sql = "insert into Students values('" + name + "','" + age + "')";
SqlConnection conn = new SqlConnection(strConn);
SqlCommand cmd = new SqlCommand(sql, conn);
conn.Open();
int flag = cmd.ExecuteNonQuery();
conn.Close();
if (flag > 0)
{
StudentsInit();
Response.Write("<script>alert('添加成功')</script>");
}
else
{
Response.Write("<script>alert('添加失败')</script>");
}
}
}
进入第二个页面ReperUpdate.aspx
在前台先写好前台的代码;
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ReperUpdate.aspx.cs" Inherits="ReperUpdate" %>
<!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>
</head>
<body>
<form id="form1" runat="server">
<div>
<p>姓名:<asp:TextBox ID="txtName" runat="server"></asp:TextBox></p>
<p>年龄:<asp:TextBox ID="txtAge" runat="server"></asp:TextBox></p>
<p>
<asp:Button ID="btnSubmit" runat="server" Text="更新" OnClick="btnSubmit_Click" /></p>
</div>
</form>
</body>
</html>
进入源点击跟新按钮进入后台页面
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class ReperUpdate : System.Web.UI.Page
{
string strConn = "server=(local);database=Student;uid=sa;pwd=localhost;";
protected void Page_Load(object sender, EventArgs e)
{
// //ASP.NET WEBFORM
//页面首次加载机制:为了减少不必要的加载,.NET底层会保存首次加载页面的内容
if (!IsPostBack)
{
//url接id的值
int id = Convert.ToInt32(Request["mykey"]);
SqlConnection conn =new SqlConnection (strConn);
string sql = "select * from Students where Id=" + id + "";
SqlDataAdapter sda = new SqlDataAdapter(sql,conn);
DataSet ds = new DataSet();
sda.Fill(ds);
//ds中存放了若干个 table DataSet DataTable DataRow DataColunm
//判断是否查到了数据
if (ds.Tables[0].Rows.Count > 0)
{
//找到第一张表格中的第一行的Name字段 将值赋给文本框显示
txtName.Text = ds.Tables[0].Rows[0]["Name"].ToString();
txtAge.Text = ds.Tables[0].Rows[0]["Age"].ToString();
}
else
{
Response.Write("<script>alert('没有该学生记录!');window.location.href='RepeaterUserInfo.aspx';</script>");
}
}
}
//更新按钮的事件
protected void btnSubmit_Click(object sender, EventArgs e)
{
//接收前面传来的id值
int id = Convert.ToInt32(Request["mykey"]);
//1获取用户文本框中输入的内容
string name = txtName.Text.Trim();
int age = Convert.ToInt32(txtAge.Text.Trim());
string sql = "update Students set Name='" + name + "',Age=" + age + " where Id=" + id + "";
SqlConnection conn = new SqlConnection(strConn);
SqlCommand cmd = new SqlCommand(sql, conn);
conn.Open();
int flag = cmd.ExecuteNonQuery();
conn.Close();
if (flag > 0)
{
//4页面跳转到WebForm1
Response.Write("<script>alert('更新成功');window.location.href='RepeaterUserInfo.aspx';</script>");//脚本javascript 使用js的跳转代码
//Response.Redirect("RepeaterUserInfo.aspx");//服务器语言 执行优先级比脚本的高
}
}
}
然后就以为完成repeater的绑定,添加,修改,删除操作;
切记页面一定要首次加载数据(!IsPostBack)