Kevin Cheng's Yard
电脑是我的老婆,编程是我的灵魂,代码是我的语言,按键是我在歌唱。
随笔- 54  文章- 0  评论- 249 
博客园  首页  新随笔  联系  管理  订阅 订阅

DevExpress ASPxGridView 使用文档三:编辑

转载请注明出处:http://surfsky.cnblogs.com/

---------------------------------------------------------
-- ASPxGridView 编辑
-- 注意:想让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>

其它
    多行编辑请参考: http://www.devexpress.com/Support/Center/e/E158.aspx
    编辑表单模板,请参考《ASPxGridView.Templates》


示例一: 绑定到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());
    }

转载请注明出处:http://surfsky.cnblogs.com 

绿色通道:好文要顶关注我收藏该文与我联系
posted @ 2010-08-13 13:07 Kevin Cheng 阅读(1063) 评论(0) 编辑 收藏
注册用户登录后才能发表评论,请 登录 或 注册,返回博客园首页。
首页博问闪存新闻园子招聘知识库
最新IT新闻:
· 谷歌将出售Clearwire股份 不到收购价1/10
· 为什么Google比苹果更令微软恐惧?
· 思科拟2.71亿美元收购私有公司Lightwire
· 社交商务公司Bazaarvoice将于2月24日进行IPO
· 戴尔收购备份软件公司AppAssure
» 更多新闻...
最新知识库文章:
· 领域模型管理与AOP
· 编程的艺术:漂亮的代码和漂亮的软件
· GIT分支管理是一门艺术
· 编程:是一门艺术
· 编程是一门艺术吗?
» 更多知识库文章...

China-pub 2011秋季教材巡展
China-Pub 计算机绝版图书按需印刷服务
Copyright ©2012 Kevin Cheng
精于斯,乐于斯。
昵称:Kevin Cheng
园龄:6年3个月
粉丝:20
关注:1
<2010年8月>
日一二三四五六
25262728293031
1234567
891011121314
15161718192021
22232425262728
2930311234

搜索

 
 

常用链接

  • 我的随笔
  • 我的评论
  • 我的参与
  • 最新评论
  • 我的标签
  • 更多链接

我的标签

  • Rss RssItem RssChannel XmlSerializer(1)
  • MVC ASP.NET Razor(1)
  • MVC Razor ASP.NET(1)
  • MVC ASP.NET(1)
  • javascript oo 类 对象 命名空间(1)
  • ASP.NET MVC SKIN 换肤(1)
  • Silverlight WPF(1)

随笔分类

  • 日子(3)
  • .NET(14)
  • .NET组件控件(15)
  • IT新闻(1)
  • 报表开发(1)
  • 代码生成器(1)
  • 工作流引擎
  • 建模与快速开发 (5)
  • 数据库 (4)
  • 杂项(7)

随笔档案

  • 2010年12月 (1)
  • 2010年11月 (1)
  • 2010年10月 (6)
  • 2010年8月 (7)
  • 2010年6月 (3)
  • 2009年12月 (1)
  • 2009年11月 (2)
  • 2009年5月 (2)
  • 2008年12月 (1)
  • 2008年8月 (1)
  • 2008年7月 (1)
  • 2007年12月 (1)
  • 2007年6月 (1)
  • 2007年5月 (1)
  • 2007年3月 (2)
  • 2007年1月 (1)
  • 2006年12月 (1)
  • 2006年11月 (1)
  • 2006年10月 (1)
  • 2006年9月 (1)
  • 2006年8月 (3)
  • 2006年6月 (5)
  • 2006年3月 (2)
  • 2006年2月 (1)
  • 2005年12月 (7)

文章分类

  • .NET(1)

相册

  • 回忆

Blogs

  • DbToCode
  • RapidTier
  • SmartPersistenceLayer
  • 灵感之源

NET WebSite

  • ASP.NET
  • CodeProject
  • CSDN
  • GoDotNet
  • MSDN
  • SourceForge

Special

  • icsharpcode.com
  • Open License
  • Python

最新评论

阅读排行榜

评论排行榜

推荐排行榜