[转]GridView中直接新增行、编辑和删除
本文转自:http://www.cnblogs.com/gdjlc/archive/2009/11/10/2086951.html
.aspx <div><asp:Button runat="server" ID="btnAdd" Text="新增" OnClick="btnAdd_Click" /></div>
<asp:GridView ID="gv" runat="server" AllowPaging="True" AllowSorting="True" DataKeyNames="id"
AutoGenerateColumns="False" OnRowCancelingEdit="gv_RowCancelingEdit" OnRowEditing="gv_RowEditing"
OnRowUpdating="gv_RowUpdating" OnRowDeleting="gv_RowDeleting" OnRowDataBound="gv_RowDataBound">
<Columns>
<asp:TemplateField HeaderText="名称">
<EditItemTemplate>
<asp:TextBox ID="txtName" runat="server" Text='<%# Bind("txtName") %>'></asp:TextBox>
<asp:RequiredFieldValidator runat="server" ID="rfvtxtName" ControlToValidate="txtName"
Display="Dynamic" ErrorMessage="*不能为空" ForeColor="Red"></asp:RequiredFieldValidator>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblName" runat="server" Text='<%# Bind("txtName") %>'></asp:Label>
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>
<asp:TemplateField HeaderText="状态">
<EditItemTemplate>
<asp:DropDownList ID="ddlIsEnable" runat="server">
<asp:ListItem Value="True">启用</asp:ListItem>
<asp:ListItem Value="False">停用</asp:ListItem>
</asp:DropDownList>
<asp:HiddenField ID="hfIsEnable" runat="server" Value='<%# Eval("IsEnable")%>' />
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblIsEnable" runat="server" Text='<%# Eval("IsEnable").ToString() == "True" ? "启用" : "停用" %>'></asp:Label>
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>
<asp:TemplateField HeaderText="排序号">
<EditItemTemplate>
<asp:TextBox ID="txtOrder" runat="server" Text='<%# Bind("Order") %>'></asp:TextBox>
<asp:RegularExpressionValidator runat="server" ID="revOrder" ControlToValidate="txtOrder"
ValidationExpression="\d+" Display="Dynamic" ErrorMessage="*必须为整数"></asp:RegularExpressionValidator>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblOrder" runat="server" Text='<%# Eval("Order") %>'></asp:Label>
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>
<asp:CommandField ShowDeleteButton="true" ShowEditButton="true" EditText="编辑" DeleteText="删除"
CancelText="取消" HeaderText="操作" />
</Columns>
<EmptyDataTemplate>
没有您查询的数据
</EmptyDataTemplate>
<PagerSettings Visible="false" />
</asp:GridView> .aspx.cs public partial class CategoryList : System.Web.UI.Page
{
private static List<Category> cateList;
private ICategory iCate = IOC.R<ICategory>();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindGV(true);
}
}
private void BindGV(bool refresh)
{
if (refresh || cateList == null)
{
cateList = iCate.List();
}
this.gv.DataSource = cateList;
this.gv.DataBind();
}
protected void gv_RowEditing(object sender, GridViewEditEventArgs e)
{
gv.EditIndex = e.NewEditIndex;
BindGV(false);
HiddenField hfIsEnable = (HiddenField)gv.Rows[e.NewEditIndex].FindControl("hfIsEnable");
DropDownList ddlIsEnable = (DropDownList)gv.Rows[e.NewEditIndex].FindControl("ddlIsEnable");
ddlIsEnable.SelectedValue = hfIsEnable.Value;
}
protected void gv_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
gv.EditIndex = -;
BindGV(false);
}
//更新
protected void gv_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
long id = Convert.ToInt32(gv.DataKeys[e.RowIndex].Values[].ToString());
string name = ((TextBox)gv.Rows[e.RowIndex].FindControl("txtName")).Text.Trim();
bool isEnable = Convert.ToBoolean(((DropDownList)gv.Rows[e.RowIndex].FindControl
lIsEnable")).SelectedValue);
string txtOrder = ((TextBox)gv.Rows[e.RowIndex].FindControl("txtOrder")).Text;
int order = string.IsNullOrEmpty(txtOrder) ? : Convert.ToInt32(txtOrder); long newId = id;
Category category = iCate.Get(id);
if (category != null)//如果数据库已存在该条记录,则更新
{
iCate.Update(id, c =>
{
c.Name = name;
c.IsEnable = isEnable;
c.Order = order;
});
}
else//新增
{
Category cNew = new Category
{
Name = name,
IsEnable = isEnable,
Order = order
};
iCate.Insert(cNew);
newId = cNew.ID;
}
Category cate = cateList.Where(c => c.ID == id).ToList().SingleOrDefault();
if (cate != null)
{
cate.ID = newId;
cate.Name = name;
cate.IsEnable = isEnable;
cate.Order = order;
} gv.EditIndex = -;
BindGV(false);
}
//删除
protected void gv_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
long id = Convert.ToInt64(gv.DataKeys[e.RowIndex].Values[].ToString());
Category cate = cateList.Where(c => c.ID == id).ToList().SingleOrDefault();
if (cate != null)
{
cateList.Remove(cate);
}
iCate.Delete(id);
this.BindGV(false);
}
//新增一行记录
protected void btnAdd_Click(object sender, EventArgs e)
{
long maxId = cateList.Max(c => c.ID) + ;
Category cate = new Category()
{
ID = maxId,
Name = "",
Order = ,
IsEnable = true
};
cateList.Add(cate);
this.gv.EditIndex = cateList.Count - ;
this.BindGV(false);
}
protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
LinkButton btn = ((LinkButton)e.Row.Cells[].Controls[]);
if (btn.Text == "删除")
{
btn.Attributes.Add("onclick", "javascript:return confirm('您确信要删除吗!?')");
}
}
}
}
[转]GridView中直接新增行、编辑和删除的更多相关文章
- jquery-easyui 中表格的行编辑功能
具体实现代码如下: <table id="tt"></table> $('#tt').datagrid({ title:'Editable DataGrid ...
- DevExpress GridControl控件行内新增、编辑、删除添加选择框
以下为内容以图片居多1234表示点击顺序 先新增一行 操作和新增数据行一样 打开ColumnEdit 选择new ButtenEdit new上方会出现一个系统命名的button 命名可以更改必须 ...
- jquery-easyui中表格的行编辑功能
datagrid现在具有行编辑能力了,使用时只须在columns中为需要编辑的列添加一个editor属性,编辑保存时同时具有数据校验能力. 看一个例子效果图: 代码如下: $('#tt').datag ...
- Gridview中奇偶数行颜色设置
在gridview中的RowDataBound事件里面写 switch (e.Row.RowType) {case DataControlRowType.Header: e.Row.BackColor ...
- layui 学习笔记一:layui table 查询、新增、编辑、删除
一.table数据的呈现(对应查询) 页面代码: @{ ViewBag.Title = "TableGrid"; } @section styles{ <link href= ...
- el-table单元格新增、编辑、删除功能
<template> <div class="box"> <el-button class="addBtn" type=" ...
- EasyUI中datagrid的行编辑模式中,找到特定的Editor,并为其添加事件
有时候在行编辑的时候,一个编辑框的值要根据其它编辑框的值进行变化,那么可以通过在开启编辑时,找到特定的Editor,为其添加事件 // 绑定事件, index为当前编辑行 var editors = ...
- (原创)EasyUI中datagrid的行编辑模式中,找到特定的Editor,并为其添加事件
有时候在行编辑的时候,一个编辑框的值要根据其它编辑框的值进行变化,那么可以通过在开启编辑时,找到特定的Editor,为其添加事件 // 绑定事件, index为当前编辑行 var editors = ...
- DevExpress GridControl控件行内新增、编辑、删除添加选择框(转)
http://blog.csdn.net/m1654399928/article/details/21951519 1.首先到GridControl控件设计里设置属性Repository (In ...
随机推荐
- strtr对用户输入的敏感词汇进行过滤
/** * 过滤用户输入的基本数据,防止script攻击 * * @access public * @return string */ function compile_str($str) { $ar ...
- 一个小笔记(7):EN_1
For nearly ten years, the Unified Modeling Language(UML) has been the industry standard for visualiz ...
- [转载]hashmap hashtable 的区别
Hashtable 和 HashMap 做为 Map 的基本特性 两者都实现了Map接口,基本特性相同 - 对同一个Key,只会有一个对应的value值存在 - 如 ...
- pygame for python3.3
pygame的更新慢的令人发指,我最初使用的python是3.4版本的,无何奈何pygame不支持3.4,甚至官网只有3.2版本的.我于是将各种版本试了一遍,出现各种问题,同时我比较钟爱3.x版本,最 ...
- 【GOF23设计模式】模板方法模式
来源:http://www.bjsxt.com/ 一.[GOF23设计模式]_模板方法模式.钩子函数.方法回调.好莱坞原则 package com.test.templateMethod; publi ...
- Linux 学习手记(4):Linux系统常用Shell命令
日期时间 date命令:显示当前时间日期 date -u # 显示格林威治(UTC)事件 date +%Y-%m-%d # 格式显示日期 date -s '20:25:25' # 修改系统时间,需要使 ...
- 如何rename sqlserver database
Problem Sometimes there is a need to change the name of your database whether this is because the or ...
- 屏幕字段结构SCREEN的字段含义
在SAP屏幕中,一个字段就像.NET中的一个控件,这个字段对应一个SCREEN结构,就像控件的多个属性. SE11可以查看SCREEN结构中的字段,只是没有备注. 名称 长度 说明 NAME 屏幕字段 ...
- 读取XML绑定TreeNode
<asp:TreeView ID="treeview" OnClick="TreeViewCheckBox_Click()" runat="se ...
- Android子线程更新UI主线程方法之Handler
背景: 我们开发应用程序的时候,处于线程安全的原因子线程通常是不能直接更新主线程(UI线程)中的UI元素的,那么在Android开发中有几种方法解决这个问题,其中方法之一就是利用Handler处理的. ...