如何在Repeater控件中实现像GridView控件一样的编辑、更新、删除功能?
复制代码 代码如下:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
BindGrid();
}
}
private void BindGrid()
{
string strSQL = "SELECT * FROM [User]";
OleDbConnection objConnection = new OleDbConnection(GetStrConnection());
objConnection.Open();
OleDbCommand objCommand = new OleDbCommand(strSQL, objConnection);
OleDbDataReader reader = objCommand.ExecuteReader(CommandBehavior.CloseConnection);
rptUser.DataSource = reader;
rptUser.DataBind();
}
protected void rptUser_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
System.Data.Common.DbDataRecord record = (System.Data.Common.DbDataRecord)e.Item.DataItem;
int userId = int.Parse(record["UserId"].ToString());
if (userId != id)
{
((Panel)e.Item.FindControl("plItem")).Visible = true;
((Panel)e.Item.FindControl("plEdit")).Visible = false;
}
else
{
((Panel)e.Item.FindControl("plItem")).Visible = false;
((Panel)e.Item.FindControl("plEdit")).Visible = true;
}
}
}
protected void rptUser_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "Edit")
{
id = int.Parse(e.CommandArgument.ToString());
}
else if (e.CommandName == "Cancel")
{
id = -1;
}
else if (e.CommandName == "Update")
{
string name = ((TextBox)this.rptUser.Items[e.Item.ItemIndex].FindControl("txtName")).Text.Trim();
string email = ((TextBox)this.rptUser.Items[e.Item.ItemIndex].FindControl("txtEmail")).Text.Trim();
string qq = ((TextBox)this.rptUser.Items[e.Item.ItemIndex].FindControl("txtQQ")).Text.Trim();
string strSQL = "UPDATE [User] SET Name=@Name,Email=@Email,QQ=@QQ WHERE UserId=@UserId";
OleDbConnection objConnection = new OleDbConnection(GetStrConnection());
OleDbCommand objCommand = new OleDbCommand(strSQL, objConnection);
objCommand.Parameters.Add("@Name", OleDbType.VarWChar);
objCommand.Parameters["@Name"].Value = name;
objCommand.Parameters.Add("@Email", OleDbType.VarWChar);
objCommand.Parameters["@Email"].Value = email;
objCommand.Parameters.Add("@QQ", OleDbType.VarWChar);
objCommand.Parameters["@QQ"].Value = qq;
objCommand.Parameters.Add("@UserId", OleDbType.Integer);
objCommand.Parameters["@UserId"].Value = int.Parse(e.CommandArgument.ToString());
objConnection.Open();
objCommand.ExecuteNonQuery();
objConnection.Close();
}
else if (e.CommandName == "Delete")
{
string strSQL = "DELETE * FROM [User] WHERE UserId=@UserId";
OleDbConnection objConnection = new OleDbConnection(GetStrConnection());
OleDbCommand objCommand = new OleDbCommand(strSQL, objConnection);
objCommand.Parameters.Add("@UserId", OleDbType.Integer);
objCommand.Parameters["@UserId"].Value = int.Parse(e.CommandArgument.ToString());
objConnection.Open();
objCommand.ExecuteNonQuery();
objConnection.Close();
}
BindGrid();
}
private string GetStrConnection()
{
return "Provider=Microsoft.Jet.OleDb.4.0;data source=" + Server.MapPath("~/Database/test.mdb");
}
/CODE>form id="form1" runat="server">
/CODE>asp:Repeater ID="rptUser" runat="server" onitemcommand="rptUser_ItemCommand"
onitemdatabound="rptUser_ItemDataBound">
/CODE>HeaderTemplate>
/CODE>table width="960" align="center" cellpadding="3" cellspacing="1" style="background-color: #ccc;">
/CODE>thead style="background-color: #eee;">
/CODE>tr>
/CODE>th width="10%">
用户ID
//CODE>th>
/CODE>th>
用户名
//CODE>th>
/CODE>th width="22%">
邮件
//CODE>th>
/CODE>th width="20%">
QQ
//CODE>th>
/CODE>th width="15%">
注册时间
//CODE>th>
/CODE>th width="12%">
操作
//CODE>th>
//CODE>tr>
//CODE>thead>
/CODE>tbody style="background-color: #fff;">
//CODE>HeaderTemplate>
/CODE>ItemTemplate>
/CODE>asp:Panel ID="plItem" runat="server">
/CODE>tr style="text-align: center;">
/CODE>td>
您可能感兴趣的文章:- asp.net使用Repeater控件中的全选进行批量操作实例
- ASP.NET中repeater控件用法实例
- 在Repeater控件中通过Eval的方式绑定Style样式代码
- Repeater控件与PagedDataSource结合实现分页功能
- 给Repeater控件里添加序号的5种才常见方法介绍
- Repeater控件绑定的三种方式
- Repeater控件动态变更列(Header,Item和Foot)信息实现思路
- 如何取得Repeater控件选择的项目及注意事项
- Repeater控件分别绑定数组和ArrayList实现思路
- Repeater控件数据导出Excel(附演示动画)
- 浅析Repeater控件的使用 (原样导出和动态显示/隐藏Repeater中的列)