本文转自: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中直接新增行、编辑和删除的更多相关文章

  1. jquery-easyui 中表格的行编辑功能

    具体实现代码如下: <table id="tt"></table> $('#tt').datagrid({ title:'Editable DataGrid ...

  2. DevExpress GridControl控件行内新增、编辑、删除添加选择框

    以下为内容以图片居多1234表示点击顺序 先新增一行 操作和新增数据行一样 打开ColumnEdit  选择new ButtenEdit  new上方会出现一个系统命名的button 命名可以更改必须 ...

  3. jquery-easyui中表格的行编辑功能

    datagrid现在具有行编辑能力了,使用时只须在columns中为需要编辑的列添加一个editor属性,编辑保存时同时具有数据校验能力. 看一个例子效果图: 代码如下: $('#tt').datag ...

  4. Gridview中奇偶数行颜色设置

    在gridview中的RowDataBound事件里面写 switch (e.Row.RowType) {case DataControlRowType.Header: e.Row.BackColor ...

  5. layui 学习笔记一:layui table 查询、新增、编辑、删除

    一.table数据的呈现(对应查询) 页面代码: @{ ViewBag.Title = "TableGrid"; } @section styles{ <link href= ...

  6. el-table单元格新增、编辑、删除功能

    <template> <div class="box"> <el-button class="addBtn" type=" ...

  7. EasyUI中datagrid的行编辑模式中,找到特定的Editor,并为其添加事件

    有时候在行编辑的时候,一个编辑框的值要根据其它编辑框的值进行变化,那么可以通过在开启编辑时,找到特定的Editor,为其添加事件 // 绑定事件, index为当前编辑行 var editors = ...

  8. (原创)EasyUI中datagrid的行编辑模式中,找到特定的Editor,并为其添加事件

    有时候在行编辑的时候,一个编辑框的值要根据其它编辑框的值进行变化,那么可以通过在开启编辑时,找到特定的Editor,为其添加事件 // 绑定事件, index为当前编辑行 var editors = ...

  9. DevExpress GridControl控件行内新增、编辑、删除添加选择框(转)

    http://blog.csdn.net/m1654399928/article/details/21951519 1.首先到GridControl控件设计里设置属性Repository    (In ...

随机推荐

  1. 开源的javascript实现页面打印功能,兼容所有的浏览器(情况属实)

    这篇文章完全是属于技术文章,也是记录一下自己在项目当中遇到的坑爹问题啊,因为是B/S的程序,所以打印功能还是必须要有的,对于打印我选择了一个js插件,发现非常的简单和方便,所以这里拿出来和大家分享一下 ...

  2. [moka同学笔记]yii2.0导航栏

    导航栏 <?php use yii\helpers\Url; /** * $navbar说明 * label:显示的标签 * url:跳转地址 * action:判断激活的操作 * class: ...

  3. ahjesus Unity3D界面快捷键

    F Frame selection Tab Shift focus between first column and second column (Two columns) Ctrl/Cmd + F ...

  4. Web网站数据”实时”更新设计

    请注意这个实时打上了双引号,没有绝对的实时,只是时间的颗粒不一样罢了(1ms,1s,1m). 服务器数据有更新可以快速通知客户端.Web 基于取得模式,而服务器建立大量的和客户端连接来提供数据实时更新 ...

  5. [翻译]:SQL死锁-锁与事务级别

    其实这一篇呢与解决我项目中遇到的问题也是必不可少的.上一篇讲到了各种锁之间的兼容性,里面有一项就是共享锁会引起死锁,如何避免呢,将我们的查询都设置中read uncommitted是否可行呢?其结果显 ...

  6. guacamole 0.9.9安装与配置

    以下命令很多都需要管理权限,建议使用管理员账号执行,遇到问题可以留言. 1.首先需要安装guacamole所需要的依赖库 必需安装的库有:Cairo.libjpeg-turbo.libpng.OSSP ...

  7. 用javascript实现全选/反选组件

    以下是本人制作的全选/反选 组件,供广大同行参考.指正: 效果如图: 在实现的过程中,全选和全部取消选中这两个功能较为简单,只需用for循环遍历所有复选框为true或false即可.反选也较为简单,也 ...

  8. swift学习笔记之-函数

    //函数 import UIKit /*获得系统时间 var date = NSDate() var timeFormatter = NSDateFormatter() timeFormatter.d ...

  9. Office版本差别引发的语法问题

    由于没有源代码,今天反编译了一个基于.NET的dll类库,再次遇到office版本差异问题,所以把它记录下来. 在反编译时,需要Aspose.Cells 5.3.1(Aspose是一套.NET类库,其 ...

  10. 复杂领域的Cynefin模型和Stacey模型

    最近好奇“复杂系统”,收集了点资料,本文关于Cynefin模型和Stacey模型.图文转自互联网后稍做修改. Cynefin模型提供一个从因果关系复杂情度来分析当前情况而作决定的框架,提出有五个领域: ...