原創|其它|編輯:郝浩|2011-04-02 13:07:53.000|閱讀 5288 次
概述:本文主要介紹如何在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@fc6vip.cn
文章轉載自:老高哥博客