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

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

时间: 2024-10-09 20:58:44

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

MYSQL基础01(新增,修改,删除)

首先说明一下,本人之前一直都是用MSSQL,由于工作原因,每天写上百条sql语句,并持续了几年;由于换了工作目前主要接触的MYSQL;所以现在开始学习MYSQL. 我的学习计划很简单,我在MSSQL使用或学习到的功能,都会尝试在MYSQL实现,所以如果我都尝试了一遍,我认为MYSQL的使用也学的差不多了,当然工作中遇到的问题和解决经验也会总结下来. 刚开始工作中最首先使用的也是最常用的当然就是增删改查了,所以第一遍就会介绍MYSQL的新增,修改,删除:查询是很大的一块,所以会另外展开 INSER

新增修改删除等方法

//创建datatable DataTable dt = new DataTable("个人简历"); dt.Columns.Add("id", typeof(int)); dt.Columns.Add("name", typeof(string)); dt.Columns.Add("sex", typeof(int)); dt.Columns.Add("address", typeof(string));

git 强制放弃本地修改(新增、删除文件)

放弃本地所有修改.新增.删除文件和目录: git checkout . && git clean -df 注释: git checkout . //放弃本地修改,没有提交的可以回到未修改前版本 git clean //是从工作目录中移除没有track的文件. git clean -df //-d表示同时移除目录,-f表示force,因为在git的配置文件中,clean.requireForce=true,如果不加-f,clean将会拒绝执行. 原文地址:https://www.cnblog

ElasticSearch.net NEST批量创建修改删除索引完整示例

本示例采用Elasticsearch+Nest 网上查了很多资料,发现用C#调用Elasticsearch搜索引擎的功能代码很分散,功能不完整,多半是非常简单的操作,没有成型的应用示例.比如新增或修改索引,都是发起一个request新增或修改一条数据,当一次性修改几千条数据时,发起的requst请求过多容易导致429 Too Many Request的错误,单个新增修改索引就非常不适用.其实Nest有批量新增.修改索引的功能,批量删除也可以.现将项目中采用Elasticsearch的C#代码分享

跟我一起学extjs5(39--单个模块的设计[7数据的增加修改删除])

跟我一起学extjs5(39--单个模块的设计[7数据的增加修改删除]) 从后台取得数据已经可以了,下面对记录的新增.修改和删除进行前后台的互动改造.首先将新增和修改在行内进行,也就是都是在grid上进行. 在grid上可以编辑行,需要在initComponent中增加一个plugins的修改,将原来cellEditing的删除掉,加入rowEditing: // 可以在grid中进行行编辑的设置 this.rowEditing = new Ext.grid.plugin.RowEditing(

完整修改删除,占位符防治字符串攻击

完整修改删除相对于修改删除就是在修改删除之前先进性判断是否有要进行操作的对象,如果有再进行修改或者删除.也就是在修改删除之前先进行查询. 以修改为例 static void Main(string[] args) { bool has = false;//定义一个变量判断是否有该对象 Console.Write("请输入要修改的用户名:"); string Uname = Console.ReadLine(); SqlConnection conn = new SqlConnectio

Linux创建修改删除用户和组

Linux 创建修改删除用户和组 介绍 在日常的维护过程中创建用户操作用的相对会多一些,但是在这个过程中涉及到的知识点就不单单就是useradd了,接下来就来详细了解账号管理的相关信息. 用户信息 先从用户信息开始分析,可以通过查询/etc/password文件,每一行代表一个用户信息 root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin m

FileSystemObject组件新建读取添加修改删除功能实例

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>FileSystemObject组件应该实例</title> </head> <

Exchange 2013 PowerShell新建&修改&删除邮箱

在我们日常使用Exchange Management Shell最多的应该就是邮箱的管理了.在这一节中,将主要介绍下在Exchange中使用语法命令在组织中创建.更新和删除邮箱. 先来看一个示例: 1.  我们可以使用Exchange Management Shell创建一个启用了邮箱功能的AD账户.语法如下: $password = ConvertTo-SecureString -AsPlainText abc.123 -Force New-Mailbox -UserPrincipalName

【转】C#添加修改删除文件文件夹大全

[转]C#添加修改删除文件文件夹大全 C#添加修改删除文件文件夹大全 StreamWriter sw = File.AppendText(Server.MapPath(".")+"\\myText.txt");sw.WriteLine("追逐理想");sw.WriteLine("kzlll");sw.WriteLine(".NET笔记");sw.Flush();sw.Close();C#拷贝文件string