原创|其它|编辑:郝浩|2011-04-02 13:07:53.000|阅读 5266 次
概述:本文主要介绍如何在DevExpress ASPxGridView中进行编辑,希望对大家有帮助。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
注意:想让GridView支持修改功能,必须指定KeyFieldName
展示编辑按钮列
<dxwgv:GridViewCommandColumn VisibleIndex="0"> <EditButton Visible="True" Text="修改" /> <DeleteButton Visible="true" Text="删除" /> <NewButton Visible="True" Text="新建" /> <CancelButton Visible="true" Text="取消" /> <UpdateButton Visible="true" Text="保存" /> <ClearFilterButton Visible="true" Text="取消过滤" /> </dxwgv:GridViewCommandColumn>
编辑视图下控件的外观设置
<dx:GridViewDataMemoColumn ... PropertiesMemoEdit-Rows="4" EditFormSettings-ColumnSpan="2" /> 或者 <dxwgv:GridViewDataMemoColumn FieldName="Notes" Visible="False"> <EditFormSettings RowSpan="4" ColumnSpan="2" /> </dxwgv:GridViewDataMemoColumn>
示例一: 绑定到IList并实现删除和修改
<dx:ASPxGridView runat="server" ID="gvImages" KeyFieldName="ImageId" OnRowDeleting= "gvImages_RowDeleting" OnRowUpdating="gvImages_RowUpdating" > <SettingsEditing Mode="Inline" /> <SettingsBehavior ConfirmDelete="true" /> <Columns> <dx:GridViewDataColumn FieldName="ImageId" Caption="ID" Visible="false" /> <dx:GridViewDataImageColumn FieldName="ThumbnailUrl" Caption="缩略图" PropertiesImage-DescriptionUrlField="ImageId" /> <dx:GridViewDataTextColumn FieldName="Description" Caption="说明" /> <dx:GridViewDataTextColumn FieldName="Keywords" Caption="关键字" /> <dx:GridViewCommandColumn Caption="编辑" > <EditButton Visible="True" Text="修改" /> <DeleteButton Visible="True" Text="删除" /> <CancelButton Text="取消" /> <UpdateButton Text="保存" /> </dx:GridViewCommandColumn> </Columns> </dx:ASPxGridView> // 展示 public void ShowArticleImages() { int articleId = Convert.ToInt32(Request.QueryString[ "articleId"]); IList <BlogArticleImage> images = BlogArticleImage.ListArticleImages(articleId); this.gvImages.KeyFieldName = "ImageId"; this.gvImages.DataSource = images; this.gvImages.DataBind(); } // 更新 protected void gvImages_RowUpdating(object sender, DevExpress.Web.Data.ASPxDataUpdatingEventArgs e) { int id = Convert.ToInt32(e.Keys[0]); string descript = Convert.ToString(e.NewValues[ "Description"]); string keywords = Convert.ToString(e.NewValues[ "Keywords"]); BlogArticleImage image = BlogArticleImage.Retrieve(id); if (image != null) { image.Description = descript; image.Keywords = keywords; image.Persist(); } e.Cancel = true; gvImages.CancelEdit(); ShowArticleImages(); } // 删除 protected void gvImages_RowDeleting(object sender, DevExpress.Web.Data.ASPxDataDeletingEventArgs e) { int id = Convert.ToInt32(e.Keys[0]); BlogArticleImage image = BlogArticleImage.Retrieve(id); if (image != null) { System.IO.File.Delete(Server.MapPath(image.ImageUrl)); System.IO.File.Delete(Server.MapPath(image.ThumbnailUrl)); image.Remove(); } e.Cancel = true; gvImages.CancelEdit(); ShowArticleImages(); }
示例二: 控件访问权限控制及CRUD操作
<dx:ASPxGridView runat="server" ID="gv" Caption="基础网" KeyFieldName="ID" Width="3000" OnRowDeleting= "gv_RowDeleting" OnRowUpdating="gv_RowUpdating" OnRowInserting="gv_RowInserting" OnInitNewRow= "grid_InitNewRow" onhtmlrowcreated="gv_HtmlRowCreated" OnCellEditorInitialize="grid_CellEditorInitialize" > <Columns> <dx:GridViewCommandColumn Caption="编辑" Width="60" > <EditButton Visible="True" Text="修改" /> <DeleteButton Visible="true" Text="删除" /> <NewButton Visible="True" Text="新建" /> <CancelButton Visible="true" Text="取消" /> <UpdateButton Visible="true" Text="保存" /> </dx:GridViewCommandColumn> <dx:GridViewDataColumn FieldName="ID" Caption="ID"/> <dx:GridViewDataColumn FieldName="CREATE_DT" Caption="创建时间"/> <dx:GridViewDataColumn FieldName="CREATOR" Caption="创建人"/> <dx:GridViewDataComboBoxColumn FieldName="UNIT" Caption="处理单位" > <PropertiesComboBox EnableSynchronization="False" EnableIncrementalFiltering="True" DropDownStyle="DropDown" /> </dx:GridViewDataComboBoxColumn> <dx:GridViewDataColumn FieldName="RESULT" Caption="处理结果" /> <dx:GridViewDataMemoColumn FieldName="ED_CMT" Caption="政企部核对结果" PropertiesMemoEdit-Rows="4" EditFormSettings-ColumnSpan="2" /> </Columns> </dx:ASPxGridView> // 普通状态下的命令按钮显隐 protected void gv_HtmlRowCreated(object sender, ASPxGridViewTableRowEventArgs e) { if (!gv.IsEditing && e.RowType == DevExpress.Web.ASPxGridView.GridViewRowType.Data) { bool isAdmin = Common.IsInRoles(new string[] { WZWF.DAL.Roles.Admin }); string unit = gv.GetRowValues(e.VisibleIndex, "UNIT").ToString(); bool isAuth = Common.IsInRoles( unit, WZWF.DAL.Roles.EnterpriseDepartment, WZWF.DAL.Roles.MaintainDepartment ); // 修改按钮 WebControl btnModify = e.Row.Cells[0].Controls[0] as WebControl; btnModify.Visible = isAuth; // 新建按钮 WebControl btnAddNew = e.Row.Cells[0].Controls[1] as WebControl; btnAddNew.Visible = isAdmin; // 删除按钮 WebControl btnDelete = e.Row.Cells[0].Controls[2] as WebControl; btnDelete.Visible = isAdmin; } } // 编辑状态下的控件访问权限控制 // 管理员:unit, result, md_cmt, ed_cmt // 政企部:ed_cmt // 网络维护部:result, md_cmt protected void grid_CellEditorInitialize(object sender, ASPxGridViewEditorEventArgs e) { if (gv.IsEditing) { // 受理单位下拉框 if (e.Column.FieldName == "UNIT") { ASPxComboBox combo = e.Editor as ASPxComboBox; using (DbClean db = new DbClean()) { combo.DataSource = db.ListUnits(); combo.TextField = "ROLE"; combo.ValueField = "ROLE"; combo.DataBind(); } } // 新建状态除了id以外都可以编辑 if (gv.IsNewRowEditing) { e.Editor.ReadOnly = (e.Column.FieldName == "ID"); } // 修改状态下根据角色可编辑部分数据 else { e.Editor.ReadOnly = true; if (e.Column.FieldName == "UNIT") e.Editor.ReadOnly = !Common.IsInRoles(WZWF.DAL.Roles.Admin); else if (e.Column.FieldName == "RESULT" || e.Column.FieldName == "MD_CMT") e.Editor.ReadOnly = !Common.IsInRoles(WZWF.DAL.Roles.Admin, WZWF.DAL.Roles.MaintainDepartment); else if (e.Column.FieldName == "ED_CMT") e.Editor.ReadOnly = !Common.IsInRoles(WZWF.DAL.Roles.Admin, WZWF.DAL.Roles.EnterpriseDepartment); } } // 可编辑控件设置背景色 e.Editor.BackColor = e.Editor.ReadOnly ? Color.White : Color.LightYellow; } // 删除 protected void gv_RowDeleting(object sender, ASPxDataDeletingEventArgs e) { int id = Convert.ToInt32(e.Keys[0]); using (DbClean db = new DbClean()) db.DelBasicNet(id); e.Cancel = true; gv.CancelEdit(); ShowData(ViewState[ "Unit"].ToString()); } // 更新 protected void gv_RowUpdating(object sender, ASPxDataUpdatingEventArgs e) { string unit = Convert.ToString(e.NewValues[ "UNIT"]); string result = Convert.ToString(e.NewValues[ "RESULT"]); string edCmt = Convert.ToString(e.NewValues[ "ED_CMT"]); if (gv.IsEditing) { int id = Convert.ToInt32(e.Keys[0]); using (DbClean db = new DbClean()) db.ModBasicNet(id, ...); } e.Cancel = true; gv.CancelEdit(); ShowData(ViewState[ "Unit"].ToString()); } // 新增 protected void grid_InitNewRow(object sender, ASPxDataInitNewRowEventArgs e) { e.NewValues[ "CREATOR"] = Page.User.Identity.Name; e.NewValues[ "CREATE_DT"] = System.DateTime.Now; } protected void gv_RowInserting(object sender, ASPxDataInsertingEventArgs e) { string unit = Convert.ToString(e.NewValues[ "UNIT"]); string result = Convert.ToString(e.NewValues[ "RESULT"]); string edCmt = Convert.ToString(e.NewValues[ "ED_CMT"]); if (gv.IsNewRowEditing) { using (DbClean db = new DbClean()) db.AddBasicNet(.....); } e.Cancel = true; gv.CancelEdit(); ShowData(ViewState[ "Unit"].ToString()); }
(慧都控件网版权所有,转载请注明出处,否则追究法律责任)
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
文章转载自:老高哥博客