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