如何实现自定义表单设计中的表单字段功能?

2026-04-13 19:327阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1449个文字,预计阅读时间需要6分钟。

如何实现自定义表单设计中的表单字段功能?

表单编辑字段+自定义表单添加、修改、删除列,列字段类型保存到字段表中,并修改自定义主表添加、修改列。+ xmlns=http://www.w3.org/1999/x head runat=server title>表单字段列表表+/

如何实现自定义表单设计中的表单字段功能?

表单编辑字段

自定义表单添加、修改、删除列,列字段类型保存到字段表中,并且修改自定义主表添加修改列。

<html xmlns="www.w3.org/1999/xhtml"> <head runat="server"> <title>表单字段列表</title> </head> <body> <form id="formFieldList" runat="server"> <div> <table class="table_bgcolor"> <tr> <td style="width: 100%; text-align: left;" class="table_titlebgcolor"> 表单管理:编辑字段 </td> </tr> <tr> <td style="width: 100%; text-align: left;"> 表单名称:<asp:Label runat="server" ID="FormNameLabel"></asp:Label> </td> </tr> <tr> <td style="width: 100%; text-align: left;"> 表单描述:<asp:Label runat="server" ID="FormDesLabel"></asp:Label> </td> </tr> <tr> <td style="width: 100%; text-align: left;"> <a class="button" target="_blank" href="AddFormField.aspx?formid=<%=getFormID() %>&fieldid=0"> 添加字段</a> <%--<a id="AddFormFieldBatch" class="button" target="_blank" href="AddFormFieldBatch.aspx?formid=<%=getFormID() %>"> 批量添加字段 </a>--%> <asp:GridView runat="server" ID="FormFieldGridView" SkinID="GridViewSkin" DataKeyNames="id" AutoGenerateColumns="false"> <EmptyDataTemplate> <table style="background-color: White; border-color: #4F7FC9; border-width: 1px; border-style: solid; border-collapse: collapse;"> <tr class="table_titlebgcolor" style="font-weight: bold;"> <th scope="col" style="width: 15%"> 字段名称 </th> <th scope="col" style="width: 25%"> 字段显示名 </th> <th scope="col" style="width: 15%"> 字段位置 </th> <th scope="col" style="width: 15%"> 表现形式 </th> <th scope="col" style="width: 15%"> 字段类型 </th> <th scope="col" style="width: 15%"> 显示顺序 </th> </tr> <tr> <td colspan="6"> 您可以点击“批量添加字段”按钮添加字段! </td> </tr> </table> </EmptyDataTemplate> <Columns> <asp:TemplateField HeaderText="序号"> <ItemTemplate> <%# Container.DataItemIndex + 1 %> </ItemTemplate> </asp:TemplateField> <asp:BoundField DataField="fieldname" HeaderText="字段名称" /> <asp:BoundField DataField="fieldlabel" HeaderText="字段显示名" /> <asp:TemplateField HeaderText="字段位置"> <ItemTemplate> <%# ShowViewType(Eval("viewType")) %> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="表现形式"> <ItemTemplate> <%# ShowHtmlType(Eval("fieldhtmltype")) %> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="字段类型"> <ItemTemplate> <%# ShowColumnType(Eval("fieldhtmltype"), Eval("type"), Eval("id"))%> </ItemTemplate> </asp:TemplateField> <asp:BoundField DataField="dsporder" HeaderText="显示顺序" /> <asp:HyperLinkField HeaderText=" 编 辑 " ControlStyle-CssClass="button" DataNavigateUrlFields="billid,id" Target="_blank" DataNavigateUrlFormatString="~/Workflow/EditFormField.aspx?formid={0}&fieldid={1}" Text=" 编辑 " /> <asp:TemplateField HeaderText=" 删 除 "> <ItemTemplate> <asp:Button runat="server" ID="DeleteFieldButton" Text=" 删除 " OnClick="onDeleteFieldButtonClick" /> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> </td> </tr> </table> </div> </form> </body> </html>

FormFieldList.aspx.cs

/// <summary> /// 删除字段 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void onDeleteFieldButtonClick(object sender, EventArgs e) { //1)关于此表单是否有工作流实例 //2)工作流节点字段视图要修改 可见 必填 编辑 Button deleteButton = sender as Button; GridViewRow row = deleteButton.NamingContainer as GridViewRow; int fieldID = (int)FormFieldGridView.DataKeys[row.RowIndex]["id"]; M.workflow_billfield billfield = billfieldBLL.GetModel(fieldID); if (billfield != null) { int viewType = billfield.viewtype.Value; if (viewType == 0) {//清理主表 formBLL.DeleteFieldOfMainTable(billfield); } else {//清理明细表 formBLL.DeleteFieldOfDetailTable(billfield); } string htmlType = billfield.fieldhtmltype; if (htmlType == "5") {//清理下拉框 List<M.workflow_SelectItem> selectItemList = selectItemBLL.GetModelList("fieldid=" + fieldID); foreach (M.workflow_SelectItem item in selectItemList) { selectItemBLL.Delete(item.id); } } if (htmlType == "7") {//清理特殊字段 List<M.workflow_specialfield> specialfieldList = specialfieldBLL.GetModelList("fieldid=" + fieldID); foreach (M.workflow_specialfield specialfield in specialfieldList) { specialfieldBLL.Delete(specialfield.id); } } billfieldBLL.Delete(fieldID); initialForm();//刷新列表 } } protected string getFormID() { return ViewState["formid"].ToString(); } protected string ShowViewType(object o) { if (o.ToString() == "0") { return "主表"; } if (o.ToString() == "1") { return "明细表"; } return ""; } protected string ShowHtmlType(object o) { if(htmlTypeDic.ContainsKey(o.ToString())) { return htmlTypeDic[o.ToString()]; } return ""; } /// <summary> /// 显示列的详细类型 /// </summary> /// <param name="htmlType"></param> /// <param name="type"></param> /// <param name="fieldID"></param> /// <returns></returns> protected string ShowColumnType(object htmlType, object type, object fieldID) { string result = ""; string fieldType = type.ToString(); switch (htmlType.ToString()) { case "1"://单行文本框 if (fieldType == "1") {//文本 result = "文本"; } else if (fieldType == "2") {//整数 result = "整数"; } else if (fieldType == "3") {//浮点数 result = "浮点数"; } else if (fieldType == "4") {//金额转换 result = "金额转换"; } else if (fieldType == "5") {//金额千分位 result = "金额千分位"; } break; case "2"://多行文本框 result = "多行文本框"; break; case "3"://浏览按钮 int db_type = int.Parse(fieldType); result = getBrowserUrlType(db_type); break; case "4"://Check框 result = "Check框"; break; case "5"://选择框 result = getContentItem(fieldID); break; case "6"://附件上传 if (fieldType == "1") { result = "上传文件"; } if (fieldType == "2") { result = "上传图片"; } break; case "7"://特殊字段 if (fieldType == "1") { result = "自定义链接"; } if (fieldType == "2") { result = "描述性文字"; } break; } return result; } private string getContentItem(object fieldID) { StringBuilder sb = new StringBuilder(); sb.Append("<table>"); List<M.workflow_SelectItem> selectItemList = selectItemBLL.GetModelList("fieldid=" + fieldID.ToString() + " order by listorder"); if (selectItemList != null && selectItemList.Count > 0) { foreach (M.workflow_SelectItem item in selectItemList) { sb.Append("<tr><td>"); sb.Append(item.selectname); sb.Append("</td></tr>"); } } sb.Append("</table>"); return sb.ToString(); } private void initialForm() { string formid = ViewState["formid"].ToString(); int id = -1; if (int.TryParse(formid, out id)) { M.workflow_bill formModel = formBLL.GetModel(id); if (formModel != null) { FormNameLabel.Text = formModel.namelabel; FormDesLabel.Text = formModel.formdes; } List<M.workflow_billfield> formFieldModelList = billfieldBLL.GetModelList("billid=" + formid + " order by viewtype,dsporder"); FormFieldGridView.DataSource = formFieldModelList; FormFieldGridView.DataBind(); } } private string getBrowserUrlType(int db_type) { YaXing.Model.WorkFlow.workflow_browserurl browserurl = browserurlBLL.GetModel(db_type); if (browserurl != null) { return browserurl.fielddbtype; } return ""; } #region Fields BLL.WorkFlow.workflow_browserurl browserurlBLL = new BLL.WorkFlow.workflow_browserurl(); private BLL.WorkFlow.SequenceIndex seqBLL = new B.SequenceIndex(); private BLL.WorkFlow.workflow_bill formBLL = new B.workflow_bill(); private B.workflow_billfield billfieldBLL = new B.workflow_billfield(); private B.workflow_billdetailtable formDetailTableBLL = new B.workflow_billdetailtable(); private B.workflow_formdetailinfo formDetailInfoBLL = new B.workflow_formdetailinfo(); BLL.WorkFlow.workflow_SelectItem selectItemBLL = new BLL.WorkFlow.workflow_SelectItem(); BLL.WorkFlow.workflow_specialfield specialfieldBLL = new BLL.WorkFlow.workflow_specialfield(); private Dictionary<string, string> htmlTypeDic = new Dictionary<string,string>(){{"1", "单行文本框"}, {"2", "多行文本框"}, {"3", "浏览按钮"}, {"4", "Check框"}, {"5", "选择框"}, {"6", "附件上传"}, {"7", "特殊字段"}}; #endregion //End Fields

本文共计1449个文字,预计阅读时间需要6分钟。

如何实现自定义表单设计中的表单字段功能?

表单编辑字段+自定义表单添加、修改、删除列,列字段类型保存到字段表中,并修改自定义主表添加、修改列。+ xmlns=http://www.w3.org/1999/x head runat=server title>表单字段列表表+/

如何实现自定义表单设计中的表单字段功能?

表单编辑字段

自定义表单添加、修改、删除列,列字段类型保存到字段表中,并且修改自定义主表添加修改列。

<html xmlns="www.w3.org/1999/xhtml"> <head runat="server"> <title>表单字段列表</title> </head> <body> <form id="formFieldList" runat="server"> <div> <table class="table_bgcolor"> <tr> <td style="width: 100%; text-align: left;" class="table_titlebgcolor"> 表单管理:编辑字段 </td> </tr> <tr> <td style="width: 100%; text-align: left;"> 表单名称:<asp:Label runat="server" ID="FormNameLabel"></asp:Label> </td> </tr> <tr> <td style="width: 100%; text-align: left;"> 表单描述:<asp:Label runat="server" ID="FormDesLabel"></asp:Label> </td> </tr> <tr> <td style="width: 100%; text-align: left;"> <a class="button" target="_blank" href="AddFormField.aspx?formid=<%=getFormID() %>&fieldid=0"> 添加字段</a> <%--<a id="AddFormFieldBatch" class="button" target="_blank" href="AddFormFieldBatch.aspx?formid=<%=getFormID() %>"> 批量添加字段 </a>--%> <asp:GridView runat="server" ID="FormFieldGridView" SkinID="GridViewSkin" DataKeyNames="id" AutoGenerateColumns="false"> <EmptyDataTemplate> <table style="background-color: White; border-color: #4F7FC9; border-width: 1px; border-style: solid; border-collapse: collapse;"> <tr class="table_titlebgcolor" style="font-weight: bold;"> <th scope="col" style="width: 15%"> 字段名称 </th> <th scope="col" style="width: 25%"> 字段显示名 </th> <th scope="col" style="width: 15%"> 字段位置 </th> <th scope="col" style="width: 15%"> 表现形式 </th> <th scope="col" style="width: 15%"> 字段类型 </th> <th scope="col" style="width: 15%"> 显示顺序 </th> </tr> <tr> <td colspan="6"> 您可以点击“批量添加字段”按钮添加字段! </td> </tr> </table> </EmptyDataTemplate> <Columns> <asp:TemplateField HeaderText="序号"> <ItemTemplate> <%# Container.DataItemIndex + 1 %> </ItemTemplate> </asp:TemplateField> <asp:BoundField DataField="fieldname" HeaderText="字段名称" /> <asp:BoundField DataField="fieldlabel" HeaderText="字段显示名" /> <asp:TemplateField HeaderText="字段位置"> <ItemTemplate> <%# ShowViewType(Eval("viewType")) %> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="表现形式"> <ItemTemplate> <%# ShowHtmlType(Eval("fieldhtmltype")) %> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="字段类型"> <ItemTemplate> <%# ShowColumnType(Eval("fieldhtmltype"), Eval("type"), Eval("id"))%> </ItemTemplate> </asp:TemplateField> <asp:BoundField DataField="dsporder" HeaderText="显示顺序" /> <asp:HyperLinkField HeaderText=" 编 辑 " ControlStyle-CssClass="button" DataNavigateUrlFields="billid,id" Target="_blank" DataNavigateUrlFormatString="~/Workflow/EditFormField.aspx?formid={0}&fieldid={1}" Text=" 编辑 " /> <asp:TemplateField HeaderText=" 删 除 "> <ItemTemplate> <asp:Button runat="server" ID="DeleteFieldButton" Text=" 删除 " OnClick="onDeleteFieldButtonClick" /> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> </td> </tr> </table> </div> </form> </body> </html>

FormFieldList.aspx.cs

/// <summary> /// 删除字段 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void onDeleteFieldButtonClick(object sender, EventArgs e) { //1)关于此表单是否有工作流实例 //2)工作流节点字段视图要修改 可见 必填 编辑 Button deleteButton = sender as Button; GridViewRow row = deleteButton.NamingContainer as GridViewRow; int fieldID = (int)FormFieldGridView.DataKeys[row.RowIndex]["id"]; M.workflow_billfield billfield = billfieldBLL.GetModel(fieldID); if (billfield != null) { int viewType = billfield.viewtype.Value; if (viewType == 0) {//清理主表 formBLL.DeleteFieldOfMainTable(billfield); } else {//清理明细表 formBLL.DeleteFieldOfDetailTable(billfield); } string htmlType = billfield.fieldhtmltype; if (htmlType == "5") {//清理下拉框 List<M.workflow_SelectItem> selectItemList = selectItemBLL.GetModelList("fieldid=" + fieldID); foreach (M.workflow_SelectItem item in selectItemList) { selectItemBLL.Delete(item.id); } } if (htmlType == "7") {//清理特殊字段 List<M.workflow_specialfield> specialfieldList = specialfieldBLL.GetModelList("fieldid=" + fieldID); foreach (M.workflow_specialfield specialfield in specialfieldList) { specialfieldBLL.Delete(specialfield.id); } } billfieldBLL.Delete(fieldID); initialForm();//刷新列表 } } protected string getFormID() { return ViewState["formid"].ToString(); } protected string ShowViewType(object o) { if (o.ToString() == "0") { return "主表"; } if (o.ToString() == "1") { return "明细表"; } return ""; } protected string ShowHtmlType(object o) { if(htmlTypeDic.ContainsKey(o.ToString())) { return htmlTypeDic[o.ToString()]; } return ""; } /// <summary> /// 显示列的详细类型 /// </summary> /// <param name="htmlType"></param> /// <param name="type"></param> /// <param name="fieldID"></param> /// <returns></returns> protected string ShowColumnType(object htmlType, object type, object fieldID) { string result = ""; string fieldType = type.ToString(); switch (htmlType.ToString()) { case "1"://单行文本框 if (fieldType == "1") {//文本 result = "文本"; } else if (fieldType == "2") {//整数 result = "整数"; } else if (fieldType == "3") {//浮点数 result = "浮点数"; } else if (fieldType == "4") {//金额转换 result = "金额转换"; } else if (fieldType == "5") {//金额千分位 result = "金额千分位"; } break; case "2"://多行文本框 result = "多行文本框"; break; case "3"://浏览按钮 int db_type = int.Parse(fieldType); result = getBrowserUrlType(db_type); break; case "4"://Check框 result = "Check框"; break; case "5"://选择框 result = getContentItem(fieldID); break; case "6"://附件上传 if (fieldType == "1") { result = "上传文件"; } if (fieldType == "2") { result = "上传图片"; } break; case "7"://特殊字段 if (fieldType == "1") { result = "自定义链接"; } if (fieldType == "2") { result = "描述性文字"; } break; } return result; } private string getContentItem(object fieldID) { StringBuilder sb = new StringBuilder(); sb.Append("<table>"); List<M.workflow_SelectItem> selectItemList = selectItemBLL.GetModelList("fieldid=" + fieldID.ToString() + " order by listorder"); if (selectItemList != null && selectItemList.Count > 0) { foreach (M.workflow_SelectItem item in selectItemList) { sb.Append("<tr><td>"); sb.Append(item.selectname); sb.Append("</td></tr>"); } } sb.Append("</table>"); return sb.ToString(); } private void initialForm() { string formid = ViewState["formid"].ToString(); int id = -1; if (int.TryParse(formid, out id)) { M.workflow_bill formModel = formBLL.GetModel(id); if (formModel != null) { FormNameLabel.Text = formModel.namelabel; FormDesLabel.Text = formModel.formdes; } List<M.workflow_billfield> formFieldModelList = billfieldBLL.GetModelList("billid=" + formid + " order by viewtype,dsporder"); FormFieldGridView.DataSource = formFieldModelList; FormFieldGridView.DataBind(); } } private string getBrowserUrlType(int db_type) { YaXing.Model.WorkFlow.workflow_browserurl browserurl = browserurlBLL.GetModel(db_type); if (browserurl != null) { return browserurl.fielddbtype; } return ""; } #region Fields BLL.WorkFlow.workflow_browserurl browserurlBLL = new BLL.WorkFlow.workflow_browserurl(); private BLL.WorkFlow.SequenceIndex seqBLL = new B.SequenceIndex(); private BLL.WorkFlow.workflow_bill formBLL = new B.workflow_bill(); private B.workflow_billfield billfieldBLL = new B.workflow_billfield(); private B.workflow_billdetailtable formDetailTableBLL = new B.workflow_billdetailtable(); private B.workflow_formdetailinfo formDetailInfoBLL = new B.workflow_formdetailinfo(); BLL.WorkFlow.workflow_SelectItem selectItemBLL = new BLL.WorkFlow.workflow_SelectItem(); BLL.WorkFlow.workflow_specialfield specialfieldBLL = new BLL.WorkFlow.workflow_specialfield(); private Dictionary<string, string> htmlTypeDic = new Dictionary<string,string>(){{"1", "单行文本框"}, {"2", "多行文本框"}, {"3", "浏览按钮"}, {"4", "Check框"}, {"5", "选择框"}, {"6", "附件上传"}, {"7", "特殊字段"}}; #endregion //End Fields