3Operatiions总结
-
实现针对offic表的增删改的功能
- 增加 ⟶ \longrightarrow ⟶insert ,新增时需要判断主键重复项
- 删除 ⟶ \longrightarrow ⟶delete ,需要判断主外键(实际操作没有真正的 delete )
- 修改-更新-编辑 ⟶ \longrightarrow ⟶update,更新 office 需要判断同义学院下不能出现相同的 officename
-
界面设计
- 增加,不需要看到所有项
- 删除,需要看到 office 所有项
- 修改,可以看到 office 所有项,;也可不需要看到所有项
- 所有项用 GridView 显示,同时添加操作列,包含”编辑“(更新)和”删除“操作
- 单独显示 insert
- 如果在同一 web 下,则选择 multiview 控件对上述两个页面进行切换
- 也可以选择2个 web ,一个显示所有项,另一个显示添加页面项
-
功能流程-总体
- 单一页面情况
- 要能显示 office 数据,(办公室编号)、办公室名称、所属学院、办公室状态。
- GridView 显示 office 所有数据,有编辑和删除功能。
- 有单独按钮可以切换到增加页面,并且能够切换回来。
- 增加页面中,有办公室名称(文本框)、所属学院(下拉式列表框)、办公室状态(下拉式列表框)
- 单一页面情况
-
GridView 设计
- 页面显示内容为数据列和操作列
- 数据列包含办公室名称、所属学院、办公室状态。
- 操作列包括编辑和删除。
- 显示出来的列给用户看的,程序员设计实际列数
-
GridView 设计-数据列
- Office 表自有的列:officeid,officename,schoolid,authorizedid
- 需要用户看到 officename,schoolname,authorizedname
- 因此需要做表连接查询可以显示于 officeid 对应的 schoolname,authorizedname。
- 那么,schoolid 和 authorizedid 是否需要保存至 GridView 中?
- 主要看操作需求。
- 如果,更新-编辑操作在 GridView 内完成,”所属学院“和“状态”是用 DropDownList 显示,绑定的时候需要绑定DataValeField 和 DataTextField,所以需要 schoolid 和 authorizedid。
- 如果,编辑-更新操作不在 GridView 中完成,则无需上述两种id。
- 补充:如果更新操作在新增页面(MultiView中)完成,此时,还是需要这两个 id 的;如果在其他 web 实现更新,则只需要 officeid 即可。用 officeid 传值给新的 web,在加载新 web 时,按照 officeid 条件访问 office 表或者 office 视图即可。
- 主要看操作需求。
- schoolid 和 authorizedid 的获得方法有两种方式:
- 方法一,做表连接查询时把两个 id 的值填充到 GridView 中;
- 方法二,点击“编辑”操作时,按照选中行的 officeid 访问数据库做条件查询,把 schoolid 和 authorizedid 获取出来
- 相比而言,方法一更便捷,减少了对数据库的额外访问。(在 RowEditing 事件中有 LoadGridView 方法访问数据库,该方法是用来给 GridView 加载数据的;而方法二要求在有 LoadGridView 方法的前提下还需要按照选中的行的 officeid 访问数据库做条件查询)
- schoolid 和 authorizedid 的获得后,是否有必要显示在 GridView 上?
- 其实没有必要,因此将其隐藏。
- 隐藏方式:选择 css,并且放置在 GridView 靠前位置。
- 原因:
- css 方式,可以在 C# 代码中正常获取 id 值;
- 位置,通常 GridView 增加列的时候是增加在尾部或中后部,如果 ID 放置在 GridView 尾部的话,如果按照索引编号取id 值的时候,就需要重新填入列索引值,或改用“列名”索引。
-
隐藏 officeid 的作用
- 本 web 操作对象是 office 表,officeid 是否显示主要看需求。对于本项目来说不要显示,因此隐藏。
-
隐藏外键 id 的作用-以 schoolid 为例
- 在编辑状态下,表示“所属学院”的 DropDownList 要加载 school 表内容,需要获得编辑时选中那行的 schoolid 值来定位 DropDownList 的选项(即,在代码中,设置 ddl 的 SelectedValue 的值)
-
更新时操作
- 当用户编辑完 GridView 某一行信息后,点击“更新”时,其意在将新的数据更新 office 表,由于我们不知道用户究竟改了哪些列,没改哪些列,因此需要获得允许更改的那几列的值。(即从 GV 编辑模板中的控件中的值或者选中项)
- 要求更新的是 office 表,所以更新的内容按照 office 表确定。
- officeid,officename,schoolid,authorizedid
- officeid 值没有改变,但是 update 语句中需要该值,因此从 GV 主键获得。
- officename 值存在于 TextBox 中,直接获取Text 即可。
- schoolid 值存在于 DDL 中,获取 SelectedValue 即可。
- authorizedid 值存在于 DDL 中,获取 SelectedValue 即可。
- 后三项都是在 GV 的“编辑模板” 中确定的控件。
-
更新后操作
- 更新完之后,如果需要立刻在 GridView 中查看结果,则需要立刻 LoadGridView()
- 如果无需看到全部项则无需 LoadGridView()
-
新增操作
-
针对 office 表的新增操作,只需要找到满足 insert 命令以及满足 office 表非空列要求的列的内容就可以
-
office 表中 officeid,officename,schoolid,authorizedid
-
officeid,写了一个代码自生成,非 SQL 中的自增。防止出现重复项。
-
officename,TextBox获取
-
schoolid,通过 DDL 获取
-
authorizedid,通过 DDL 获取
-
这几个控件于 GV 无关
-
schoolid,通过 DDL 获取
-
authorizedid,通过 DDL 获取
-
这几个控件于 GV 无关
-