欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » AspxGridView使用教程 » 正文

最新评论

从服务器端操作数据(新增、修改、删除等)

创建时间:2011年11月08日 13:27  阅读次数:(10098)
分享到:
在开始本章之前应该注意:
1,在新增、修改、删除行前应设置KeyFieldName属性,否则无法执行行维护。
2,如果使用SqlDataSource作为数据源,必须设置DataSourceMode=”DataSet”才可更新数据(插入、修改、删除),DataSourceMode=”datareader”时不可更新数据。


一、如何进入编辑状态
在后台调用AddNewRow()进入新增状态,
调用StartEditRow()进入修改状态
调用CancelEdit()或UpdateEdit()取消编辑状态

示例:
protected void btnServerSave_Click(object sender, EventArgs e)
{
    this.ASPxGridView1.CancelEdit();//取消编辑状态
    this.ASPxGridView1.UpdateEdit();//保存数据
}


二、调用UpdateEdit方法保存数据,或调用BeginUpdate()和EndUpdate()分别处理保存前与保存后的操作。


三、编辑模式的设置
即设置SettingsEditing.Mode属性
Inline:在当前行上直接编辑(类似grid)
EditForm:当前行转化为表单,嵌入在行中
EditFormAndDisplayRow:同EditForm,但保留当前行
PopupEditForm: 弹出窗口编辑

编辑面板位置的设置:
SettingsEditing.NewItemRowPosition属性用来指定新增行的位置。GridViewNewItemRowPosition枚举型,可取值:Top、Bottom。默认为Top。
当取值为Top时,在当前页第一行新增;当取值为Bottom时,在当前页最后一行新增。

如下示例演示了如何编辑模式:
protected void btnServerAddRow_Click(object sender, EventArgs e)
{
    string editMode = this.ddlEditMode.SelectedValue;
    GridViewEditingMode gridViewEditingMode;
    switch (editMode)
    {
        case "Inline":
            gridViewEditingMode = GridViewEditingMode.Inline;
            break;
        case "EditForm":
            gridViewEditingMode = GridViewEditingMode.EditForm;
            break;
        case "EditFormAndDisplayRow":
            gridViewEditingMode = GridViewEditingMode.EditFormAndDisplayRow;
            break;
        case "PopupEditForm":
            gridViewEditingMode = GridViewEditingMode.PopupEditForm;
            break;
    }
    this.ASPxGridView1.SettingsEditing.Mode = gridViewEditingMode;
    this.ASPxGridView1.AddNewRow();
}


下面我们开始各方法的具体示例:

1,新增行后保存数据方法示例:
<dxwgv:ASPxGridView ID="ASPxGridView1" runat="server" KeyFieldName="LogID" DataSourceID="SqlDataSource1" >        
<Columns >
    <dxwgv:GridViewDataColumn Caption="LogID" FieldName="LogID" ReadOnly="false" / >
    <dxwgv:GridViewDataColumn Caption="发生时间" FieldName="OCCDatetime" ReadOnly="false" / >
    <dxwgv:GridViewDataColumn Caption="事件" FieldName="Event" / >
    <dxwgv:GridViewDataColumn Caption="类型" FieldName="Type" / >
    <dxwgv:GridViewDataColumn Caption="创建人" FieldName="Creator" / >
    <dxwgv:GridViewDataColumn Caption="创建日期" FieldName="CreateDate" / >
    <dxwgv:GridViewDataColumn Caption="备注" FieldName="Remark" / >      
    <dxwgv:GridViewCommandColumn Caption="操作" Visible="true" >
        <UpdateButton Text="保存" Visible="true" / >
        <NewButton Text="新增" Visible="true" / >
    </dxwgv:GridViewCommandColumn >      
</Columns >
</dxwgv:ASPxGridView >

<asp:SqlDataSource
  id="SqlDataSource1"
  runat="server"           
  DataSourceMode="DataSet"
  ConnectionString="数据库连接字符"
  SelectCommand="select * from Sys_Log"
  InsertCommand="Insert into Sys_Log(OCCDatetime,Event,Type,Creator,CreateDate,Remark) values(@OCCDatetime,@Event,@Type,@Creator,@CreateDate,@Remark)" >
  <InsertParameters >
    <asp:Parameter Name="OCCDatetime" Type="DateTime" / >
    <asp:Parameter Name="Event" Type="String" / >
    <asp:Parameter Name="Type" Type="String" / >
    <asp:Parameter Name="Creator" Type="String" / >
    <asp:Parameter Name="CreateDate" Type="DateTime" / >
    <asp:Parameter Name="Remark" Type="String" / >           
  </InsertParameters >
</asp:SqlDataSource >


2.修改示例:
(1)必要条件:数据源必须支持更新(如SqlDataSource配置了UpdateCommand), 必须有主键。
(2)调用StartEdit方法使行进入编辑状态
可以调用UpdateEdit方法保存数据,或调用CancelEdit方法取消编辑状态。
也可以显示出内置的【编辑】按钮让用户点击进入编辑状态。
int firstSelectedRowIndex =-1;
if (this.ASPxGridView1.VisibleRowCount <= 0) return;
//取选中的第一行
do
{
    firstSelectedRowIndex++;
    if (this.ASPxGridView1.Selection.IsRowSelected(firstSelectedRowIndex))
    {
        break;
    }
} while (firstSelectedRowIndex  >= 0 || firstSelectedRowIndex  >= this.ASPxGridView1.VisibleRowCount);

if (firstSelectedRowIndex == -1)
{
    firstSelectedRowIndex = 0;
}
int logID = (int)(this.ASPxGridView1.GetRowValues(firstSelectedRowIndex, "LogID"));

this.ASPxGridView1.MakeRowVisible(logID);//使指定行可见
this.ASPxGridView1.FocusedRowIndex = 0;//使指定行成为当前行
this.ASPxGridView1.Selection.UnselectAll();//取消所有行的选择
this.ASPxGridView1.Selection.SelectRow(0);//选中第一行
this.ASPxGridView1.StartEdit(firstSelectedRowIndex);//使指定行进入编辑状态


4.删除
(1)如果数据源不支持删除则无法执行。必须有主键才能删除(KeyFieldName)。
(2)可调用DeleteRow方法实现数据删除。DeleteRow成功执行后会将数据从数据库中删除。调用DeleteRow方法会首先触发RowDeleting事件(可以在此事件中阻止删除),执行后会触发RowDeleted事件。终端用户还可以通过点击内置的【删除】按钮实现删除。

DeleteRow语法:
Void DeleteRow(int visibleIndex)
参数visibleIndex表示行号。

RowDeleting事件的声明原型:
void ASPxGridView1_RowDeleting(object sender, DevExpress.Web.Data.ASPxDataDeletingEventArgs e)

可以通过修改ASPxDataDeletingEventArgs.Cancel=true来阻止删除。
DevExpress.Web.Data.ASPxDataDeletingEventArgs属性:
Cancel:bool,是否取消删除。可读写。
Keys:OrderedDictionary,要删除行的主键栏位值。只读。
Values: OrderedDictionary,要删除行的非主键(实际上是所有栏位)栏位值。只读。

示例:
//删除行前事件
protected void ASPxGridView1_RowDeleting(object sender, DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
{
    for (int i = 0; i < e.Keys.Count; i++)
    {
        if (Int32.Parse(e.Keys[i].ToString())  > 20000)
        {
            e.Cancel = true;
            break;
        }
    }
}


RowDeleted事件的声明原型:
void ASPxGridView1_RowDeleted(object sender, DevExpress.Web.Data.ASPxDataDeletedEventArgs e)
可以在此事件中获取删除时出现的异常并按自己的方法处理异常,或记录成功删除的行数。

DevExpress.Web.Data.ASPxDataDeletedEventArgs属性包括:
AffectedRecords:int,删除影响到的行数。只读。
Exception:Exception,删除数据期间发生的异常。只读。
ExceptionHandled:bool,是否已处理异常。可读写。
Keys:OrderedDictionary,要删除行的主键栏位值。只读。
Values: OrderedDictionary,要删除行的非主键(实际上是所有栏位)栏位值。只读。
来源:.net学习网
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf】

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论4条
  • #1楼  评论人:QQ913403110  评论时间:2012-6-27 9:38:35
  • 我想问下自定义按钮怎么调用事件?调用的是哪个事件?
  • #2楼  评论人:Wyf  评论时间:2012-6-27 10:14:45
  • 要是没有理解错,你说的自定义按钮是自己在页面放置的按钮是吗?如果是这样,你要先告诉我你想要实现什么功能,才知道调用那个事件。
  • #3楼  评论人:新手  评论时间:2013-3-6 15:22:21
  • 我想问下弹出窗体编辑功能 是不是和浏览器有关系
  • #4楼  评论人:Wyf  评论时间:2013-3-6 15:30:35
  • 这个没有测试过,我本人用的是IE。
发表评论:
留言人:
内  容:
请输入问题 33+16=? 的结果(结果是:49)
结  果: