码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-06-19 16:35:30      阅读:526      评论:0      收藏:0      [点我收藏+]

标签:

在开始本章之前应该注意:
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,要删除行的非主键(实际上是所有栏位)栏位值。只读。

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

标签:

原文地址:http://www.cnblogs.com/xumingyang/p/4588993.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!