| |
 |
控制新增/更新和删除的许可 |
默认情况下,DTable禁止了记录的新增、更新、删除许可。要启用该功能需要通过相应的属性设置来实现。
- 一、允许删除
- 4.0属性 AE_EnableDelete
- 5.0测试版属性 AE_EnableDelete
- 5.0属性 Edit_EnableDel
- 属性说明 选择True时,允许使用内置的删除功能。如果不使用内置的删除按钮,请指定:AE_DeleteButton_Html属性来设置删除按钮的外观。如果利用此属性让列表显示一个图片按钮但并不是真的使用删除功能,请指定:List_Delete_Url
- 例如在5.0版本中要允许使用删除按钮,设置为:DTable1.Edit_EnableDel=true;
- 如果AdminMode=true(管理员模式被打开),则也会自动开启删除功能
- 如果设置了Edit_EnableDel=true,则会自动在行尾添加一个删除本条记录的按钮。
- 如果设置了Edit_EnableDel=true,且允许了所有内置按钮显示或者允许了批量删除按钮显示,则会在列表状态的行首显示CheckBox,并生成了批量删除所需的相关代码。
- 二、允许新增
- 4.0属性 AE_EnableAddNew
- 5.0测试版属性 AE_EnableAddNew
- 5.0属性 Edit_EnableAdd
- 属性说明 是否使用内置的数据添加功能。添加数据的链接地址为本页面地址后面添加一个参数:“addnew=true”
- 如果要允许内置的记录新增功能,设置如:DTable1.Edit_EnableAdd=true;
- 三、允许记录更新
- 4.0属性 AE_EnableEdit
- 5.0测试版属性 AE_EnableEdit
- 5.0属性 Edit_EnableEdt
- 属性说明 选择True时,允许使用内置的记录更新功能。如果您需要编辑的不是所有字段,请指定AE_FieldList属性,同时,您所需要更新的表,必须有一个列已经设置了主键,否则将返回错误
- 设置记录更新如:DTable1.Edit_EnableEdt=true;
- 如果允许了记录更新,则会在列表状态的行尾增加一个按钮,按此按钮即可进入记录更新状态。
- 四、关于删除操作的一些相关信息
- 在允许内置删除后,行尾将自动添加一个删除按钮。用户可以在允许记录删除的同时禁止显示该按钮,此时需要设置属性Edit_ShowED_Button=false。
- 除了可以使用行尾生成的删除按钮外,还可以通过如下几种方式实现删除操作:
- 设置AdminMode=true(管理员操作模式),将显示内置删除Button和批量删除的Button
- 允许删除按钮显示(ShowBtn_Del=true)
- 允许批量删除按钮显示(ShowBtn_DelBatch=true)
- 允许所有内置按钮的显示(ShowBtn_All=true)
- 自定义删除按钮(通过一个url传递删除记录的参数,默认的参数为MeditId=id).如果要定义自定义按钮来实现删除操作,则发送该url命令必须来自本页面,DTable默认是禁止跨页面提交命令的。
- 自定义行尾显示的删除按钮。可以通过定义Edit_Html_DelBtn属性来更改默认的删除按钮图案。用户可以使用一个html代码来表达该按钮,如用一个图片来定义该按钮图案:DTable1.Edit_Html_DelBtn="<img src=images/del.gif border=0>";有如用文字来表达:DTable1.Edit_Html_DelBtn="<font color=#FF0000>[删除]</font>";
- 五、关于新增记录的一些相关信息
- 进入新增记录界面的方法
- 使用内置的按钮进入新增记录状态。当定义了ShowBtn_Add=true或者定义了AdminMode=true或者定义了ShowBtn_All=true时,列表状态将显示新增记录的按钮。
- 通过一个url直接进入新增界面。用户可以通过在当前路径添加一个QueryString参数进入新增状态。如当前Url为abc.aspx?PageNo=2,用户可以通过这样的Url进入新增状态:abc.aspx?PageNo=2&addnew=true
- 进入新增界面没有任何限制,但是在新增界面提交数据则必须在本物理页面进行。
- DTable采取了两种方法来限制跨页面提交。一是采用验证码模式(不用用户输入),一是检测提交页面的路径。
- 六、关于记录更新的一些相关信息
- 进入记录更新的方法
- 使用内置的按钮进入更新界面。当定义了ShowBtn_Edt=true或者定义了AdminMode=true或者定义了ShowBtn_All=true时,在记录详细查看界面将显示记录更新按钮
- 通过行尾的记录更新按钮进入记录更新界面
- 自定义按钮通过Url传递参数进入记录更新界面。如果不使用内置按钮,可以通过在当前页面传递两个参数进入记录更新界面:传递MEditID,标记当前记录的ID;传递Furl标记当前进入更新界面的url,以供更新完成后返回。
- 进入更新界面没有任何限制,但是提交数据必须在本物理页面进行。DTable采取了两种方法来限制跨页面提交。一是采用验证码模式(不用用户输入),一是检测提交页面的路径。
- 七、关于防止用户跨权限操作的限制。
- 在一个管理系统中,用户的列表显示了自己发布的文章列表,并允许删除、更新自己发布的记录。此时,用户在列表状态所提供的所有操作按钮均能对自己发布的记录进行操作,但是如果此时用户通过url来手动更改标识ID的参数,则会对同一个表的其它记录进行操作,显然这是不被允许的。DTable提供了一个属性来限制用户将要操作的记录的约束。5.0版本中该属性为Edit_Restriction,该属性指定记录更新、详细查看、删除操作的约束,例如:指定删除记录的记录的某一个字段必须符合一定的条件,如同SQL语句的where限制。例如: and userid=4
。此限制仅仅限制更新和删除操作,属性类型为string?
- 举例说明该约束在操作时的限制。这里假设上述表拥有三个字段,列0是自增长的主键id,列1是主题,列2是发布人的用户ID。登录的用户使用了一个session来记录他的用户名,该session命名为UserID,此时,为了限制该用户跨权限操作,可以设置为:DTable1.Edit_Restriction="用户ID='" + Page.Session["UserID"] + "'";
如此以来,无论用户进行更新操作还是进行删除、详细查看,Sql语句均要验证“用户ID”列的值必须等于他自己的用户ID.如果用户可以被允许更新而不许删除操作该如何设置呢?
string strUserID=""; //定义用户UserID
if(Page.Session["UserID"]!=null) //如果存在该Session,就给strUserID赋值
{
strUserID=Page.Session["UserID"].ToString();
}
else //如果不存在,就引导到登录页面
{
Page.Response.Redirect("login.aspx");
}
if(Page.QuertString["mdeleteid"]!=null) //如果当前处于删除操作
{
DTable1.Edit_Restriction="用户ID='" + strUserID + "'"; //定义约束
}