本文转自: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. 与众不同 windows phone (39) - 8.0 联系人和日历

    [源码下载] 与众不同 windows phone (39) - 8.0 联系人和日历 作者:webabcd 介绍与众不同 windows phone 8.0 之 联系人和日历 自定义联系人存储的增删 ...

  2. win32程序启用控制台

    #include <cstdio> #define USE_WIN32_CONSOLE int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _I ...

  3. PHP使用SnowFlake算法生成唯一ID

    前言:最近需要做一套CMS系统,由于功能比较单一,而且要求灵活,所以放弃了WP这样的成熟系统,自己做一套相对简单一点的.文章的详情页URL想要做成url伪静态的格式即xxx.html 其中xxx考虑过 ...

  4. 泛函编程(7)-数据结构-List-折叠算法

    折叠算法是List的典型算法.通过折叠算法可以实现众多函数组合(function composition).所以折叠算法也是泛函编程里的基本组件(function combinator).了解折叠算法 ...

  5. ahjesus根据身份证号码获取相关信息(生日,省市县,性别)

    使用说明: //出自http://www.cnblogs.com/ahjesus 尊重作者辛苦劳动成果,转载请注明出处,谢谢! var idCard = new IdCard();var msg = ...

  6. git 上传项目到github

    1.本地新建文件夹GIT,Git Bash打开命令窗口, ①git config --global user.name "名字"  eg:  git config --global ...

  7. Atitit.office word  excel  ppt pdf 的web在线预览方案与html转换方案 attilax 总结

    Atitit.office word  excel  ppt pdf 的web在线预览方案与html转换方案 attilax 总结 1. office word  excel pdf 的web预览要求 ...

  8. 在SharePoint中无代码开发InfoPath应用: 获取当前用户信息

    很多种不同的场景下,会需要得到当前的用户信息,例如需要根据当前用户判断组,进而控制权限. 首先InfoPath提供了一个userName方法,来实现这个目的,不过这个方法的问题是只能获得不包含域名的用 ...

  9. Android Studio 插件的使用

    1.GsonFormat https://github.com/zzz40500/GsonFormat 2.Android SelectorChapek     http://blog.csdn.ne ...

  10. Xcode找Library位置