编辑 | blame | 历史 | 原始文档

Gs.DevApp 快速上手手册

目录速览

  • DevFrm/:各业务模块的 WinForms 窗体,例如 BasicData/Frm_MesWorkshopLine.csQC/Frm_FqcDetect01.cs。所有查询与 CRUD 入口都在这些窗体里。
  • ToolBox/UtilityHelper.cs:通用方法库,包含 HTTP 调用、表格翻页、控件启用控制等。
  • ToolBox/MsgHelper.cs:统一的消息提示封装。
  • Entity/:接口交互模型,例如 PageQueryModelReturnModel<T>,用于分页/返回值解析。
  • UserControl/UcToolBarMenu.cs:工具条控件,定义了 btnAddClickbtnSaveClick 等固定事件。

查询固定入口:getPageList

  1. 触发链路:pageBar1.PagerEventtoolBarMenu1.btnLoadClicktoolBarMenu1.btnQueryClick 最终都会调用 getPageList(int curPage)(参见 DevFrm\BasicData\Frm_Customer.cs:36)。
  2. 方法必做三件事:
  • 构造 PageQueryModel 并序列化:new PageQueryModel(curPage, pageBar1.RowsCount, sortName, "asc", "", UtilityHelper.GetSearchWhere(_filterList))
  • 调用接口:UtilityHelper.HttpPost("", _webServiceName + "GetListPage", json)
  • 解析并绑定:UtilityHelper.ReturnToTablePage(strReturn) → 绑定到 gcMain1,同步 pageBar1.TotalPages/RecordCount
  1. 如果要改查询条件,查 _filterList 的构建流程(UtilityHelper.GetDilter + ShowFilter 自定义筛选)。

明细加载:getModel

  • 切换到明细页或执行编辑时,UtilityHelper.SetTabParameter 会拉起 getModel(string guid)
  • 该方法调用 _webServiceName + "GetModel",通过 UtilityHelper.SetValueByObj(layoutMx1.Controls, data, isEdit) 给控件回填;当 toolBarMenu1.currentAction == "edit" 时允许编辑。
  • 若看到“明细不刷新”,先确认 lbGuid 是否赋值、toolBarMenu1.currentAction 是否被重置。

新增/编辑/保存

  • 入口统一绑定在窗体构造函数中:
  • btnAddClickUtilityHelper.CleanValueByControl(layoutMx1.Controls, true) 清空控件,JumpTab(xtraTabControl1, 4) 切到编辑页。
  • btnEdtClickUtilityHelper.GetCurrentRow(...) 读取当前行,ChangeEnableByControl(..., true) 开启编辑。
  • btnSaveClick:组装匿名对象(通常含 Guid = UtilityHelper.ToGuid(lbGuid.Text)),然后 UtilityHelper.HttpPost("", _webServiceName + "EditModel", json)。成功后清除 currentActionChangeEnableByControl(..., false) 并提示。
  • 常见校验与按钮状态均写在 ToolBarMenu1_btnSaveClick 内,直接在对应窗体里调整。

删除与刷新

  • 删除固定在 toolBarMenu1.btnDelClick(如 DevFrm\BasicData\Frm_MesWorkshopLine.cs:200):
  • 通过 UtilityHelper.GetCurrentRow 拿 Guid → MsgHelper.AskQuestion 二次确认 → 调用 _webServiceName + "DeleteModel"
  • 成功后通常 getPageList(pageBar1.CurrentPage) 重新拉取列表。
  • 刷新按钮 btnLoadClick 默认判断当前页签:在明细页执行 getModel(lbGuid.Text),否则回到 getPageList

常用工具方法速查

  • UtilityHelper.HttpPost:统一的接口请求,自动取 App.config 中的 WebApiUrl,调试时可先打印 _webServiceName 确认 URL。
  • UtilityHelper.ReturnToTablePage / ReturnToDynamic:把接口 JSON 转为 ReturnModel<T>;当列表渲染异常时首选检查 rtnCodertnMsg
  • UtilityHelper.GetSearchWhere:把 FilterEntity 拼成 SQL 片段,位于 ToolBox/UtilityHelper.cs 1679 行附近。
  • UtilityHelper.JumpTab / SetGridViewParameter / SetTabParameter:负责列表与明细页的联动;若翻页或双击行为失效,先看这些设置是否被调用。
  • UtilityHelper.ChangeEnableByControlSetValueByObjCleanValueByControl:表单控件批量赋值/禁用的首选 API。
  • ToolBox.MsgHelper:挟带统一样式的提示窗,避免直接使用 MessageBox.Show

调试小贴士

  • 不知道某功能在哪个窗体?使用 rg "MesXxxManager"rg "btnSaveClick" 快速定位。
  • 所有查询都命名为 getPageList(小写 g),所以 rg "getPageList" 能一次看清所有窗体的分页实现。
  • _webServiceName 字段指向后端控制器前缀(如 "MesWorkshopLineManager/"),定位接口时只需组合 GetListPageGetModelEditModelDeleteModel
  • 工具条所有按钮事件的原始定义在 UserControl/UcToolBarMenu.cs;如果需要新增按钮或排查禁用逻辑,可以从这里下手。