DevExpress8.1 ASPxGridView保存数据的心得

来源:互联网 发布:让中国儿童也学会编程 编辑:程序博客网 时间:2024/06/07 01:55

看了DevExpress8.1 ASPxGridView的Demo后,很感兴趣,试着使用之。

demo中是静态绑定数据表,而我的数据是三层架构,保存时不能与demo中一样,只能逐条更新记录。

网上我搜索了一下,相关例程几乎找不到。我花了好多时间,才对逐条保存记录有了一点研究心得,并共享给广大有兴趣的网友。

(插入代码功能不能用,只了纯文本了。Otz...) 

///以下是逐条更新记录的代码,放在RowUpdating事件中。
///注意我使用了using DevExpress.Web.ASPxEditors;
///数据视图控件名:gvCannel
protected void gvChannel_RowUpdating(object sender, DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)
    {
        ////更新数据
        //读取记录主键值。键名为ChannelID。我找不到像DataGridView中DataKeys类似属性,只好将键值存放在HiddenFile控件hdID.Value中。
        int ChannelID = Convert.ToInt32("0" + ((HiddenField)(gvChannel.FindEditRowCellTemplateControl((DevExpress.Web.ASPxGridView.GridViewDataColumn)(gvChannel.Columns["Orders"]), "hdID"))).Value);
        web.BLL.Channel bll = new web.BLL.Channel();   //业务层
        web.Model.Channel channel = bll.GetModel(ChannelID);   //数据模型
        //在数据绑定时使用了模板,在模板中放了一个控件(ASPxTextBox) txtCaption。该列名为"Caption"
        channel.Caption = ((ASPxTextBox)(gvChannel.FindEditRowCellTemplateControl((DevExpress.Web.ASPxGridView.GridViewDataColumn)(gvChannel.Columns["Caption"]), "txtCaption"))).Text;  
        //从模板ASPxSpinEdit控件txtOrders.Number中读取数据,存入数据模型属性中。
        channel.Orders = (int)((ASPxSpinEdit)(gvChannel.FindEditRowCellTemplateControl((DevExpress.Web.ASPxGridView.GridViewDataColumn)(gvChannel.Columns["Orders"]), "txtOrders"))).Number;
        //.....这里部分代码省略....
        bll.Update(channel);   //用业务层更新记录
        gvChannel.CancelEdit();    //结束编辑状态
        e.Cancel = true;   //这个不可少!!!不然更新默认状态的数据集,进而发生错误。
        bindChannel();   //重新绑定数据集
    }

从数据行中读取数据,我用了FindEditRowCellTemplateControl()。

我还不知道更好的办法,找到了一定贴上来,先凑合着用吧!

==========================================================

补充,其实没有必要使用模板,在RowUpdating事件中,可从e.Keys提取键值,从e.NewValues中提取更新的值,然后保存到数据表中。这样简单多了!!!

原创粉丝点击