20240523 菜单精简

This commit is contained in:
2024-05-23 09:41:47 +08:00
parent 3de388f25d
commit e1517d9238
70 changed files with 1029 additions and 569 deletions
+27 -3
View File
@@ -18,7 +18,7 @@
runat="server" BoxFlex="1" DataKeyNames="ID" AllowPaging="true"
IsDatabasePaging="true" PageSize="20" OnPageIndexChange="Grid1_PageIndexChange"
DataIDField="ID" AllowSorting="true" SortField="Name" EnableTextSelection="True"
SortDirection="ASC" EnableColumnLines="true" OnSort="Grid1_Sort">
SortDirection="ASC" EnableColumnLines="true" OnSort="Grid1_Sort" EnableRowDoubleClickEvent="true" OnRowDoubleClick="Grid1_RowDoubleClick">
<Toolbars>
<f:Toolbar ID="Toolbar2" Position="Top" runat="server" ToolbarAlign="Left">
<Items>
@@ -109,7 +109,10 @@
FieldType="Date" Renderer="Date" RendererArgument="yyyy-MM-dd HH:mm:ss" HeaderText="上传时间"
HeaderTextAlign="Center" TextAlign="Center">
</f:RenderField>
</Columns>
</Columns>
<Listeners>
<f:Listener Event="beforerowcontextmenu" Handler="onRowContextMenu" />
</Listeners>
<PageItems>
<f:ToolbarSeparator ID="ToolbarSeparator1" runat="server">
</f:ToolbarSeparator>
@@ -121,7 +124,28 @@
</PageItems>
</f:Grid>
</Items>
</f:Panel>
</f:Panel>
<f:Window ID="Window1" Title="人员信息" Hidden="true" EnableIFrame="true" EnableMaximize="true"
Target="Parent" EnableResize="false" runat="server" OnClose="Window1_Close" IsModal="true"
Width="1024px" Height="620px">
</f:Window>
<f:Menu ID="Menu1" runat="server">
<f:MenuButton ID="btnMenuEdit" OnClick="btnMenuEdit_Click" Icon="Pencil" EnablePostBack="true"
Hidden="true" runat="server" Text="编辑">
</f:MenuButton>
</f:Menu>
</form>
<script type="text/javascript">
var menuID = '<%= Menu1.ClientID %>';
// 返回false,来阻止浏览器右键菜单
function onRowContextMenu(event, rowId) {
F(menuID).show(); //showAt(event.pageX, event.pageY);
return false;
}
function reloadGrid() {
__doPostBack(null, 'reloadGrid');
}
</script>
</body>
</html>
@@ -16,6 +16,7 @@ namespace FineUIPro.Web.BoSheng
{
if (!IsPostBack)
{
GetButtonPower();
Funs.DropDownPageSize(this.ddlPageSize);
//this.txtStartDate.Text = string.Format("{0:yyyy-MM-dd}", DateTime.Now);
//this.txtEndDate.Text = string.Format("{0:yyyy-MM-dd}", DateTime.Now);
@@ -90,5 +91,61 @@ namespace FineUIPro.Web.BoSheng
this.GridBind();
}
#endregion
protected void Window1_Close(object sender, WindowCloseEventArgs e)
{
this.GridBind();
}
protected void btnMenuEdit_Click(object sender, EventArgs e)
{
this.EditData();
}
protected void Grid1_RowDoubleClick(object sender, GridRowClickEventArgs e)
{
this.EditData();
}
/// <summary>
/// 编辑数据方法
/// </summary>
private void EditData()
{
if (Grid1.SelectedRowIndexArray.Length == 0)
{
Alert.ShowInTop("请至少选择一条记录!", MessageBoxIcon.Warning);
return;
}
string id = Grid1.SelectedRowID;
var person = BLL.BOSHENGService.GetBoPersonById(id);
if (person != null)
{
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("BoPersonEdit.aspx?id={0}", id, "编辑 - ")));
}
}
#region
/// <summary>
/// 获取按钮权限
/// </summary>
/// <param name="button"></param>
/// <returns></returns>
private void GetButtonPower()
{
if (Request.Params["value"] == "0")
{
return;
}
var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, BLL.Const.BoPersonMenuId);
if (buttonList.Count > 0)
{
if (buttonList.Contains(BLL.Const.BtnModify))
{
this.btnMenuEdit.Hidden = false;
}
}
}
#endregion
}
}
+27
View File
@@ -137,5 +137,32 @@ namespace FineUIPro.Web.BoSheng {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList ddlPageSize;
/// <summary>
/// Window1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Window Window1;
/// <summary>
/// Menu1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Menu Menu1;
/// <summary>
/// btnMenuEdit 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.MenuButton btnMenuEdit;
}
}
@@ -0,0 +1,96 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="BoPersonEdit.aspx.cs" Inherits="FineUIPro.Web.BoSheng.BoPersonEdit" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>修改博晟人员信息</title>
</head>
<body>
<form id="form1" runat="server"><f:PageManager ID="PageManager1" runat="server" AutoSizePanelID="SimpleForm1"/>
<f:Form ID="SimpleForm1" ShowBorder="false" ShowHeader="false" Title="博晟人员信息"
AutoScroll="true" BodyPadding="10px" runat="server" RedStarPosition="BeforeText"
LabelAlign="Right">
<Rows>
<f:FormRow>
<Items>
<f:TextBox ID="txtName" runat="server" Label="姓名" LabelAlign="Right" Required="true" ShowRedStar="true" Readonly="true"></f:TextBox>
<f:TextBox ID="txtDepartName" runat="server" Label="所在单位" LabelAlign="Right" Required="true" ShowRedStar="true"></f:TextBox>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:TextBox ID="txtIdentifyID" runat="server" Label="身份证号码" LabelAlign="Right" Required="true" ShowRedStar="true"></f:TextBox>
<f:RadioButtonList ID="rblSex" runat="server" Label="性别" LabelAlign="Right">
<f:RadioItem Value="1" Text="男" Selected="true"/>
<f:RadioItem Value="2" Text="女" />
</f:RadioButtonList>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:DatePicker ID="txtBirthDay" runat="server" Label="出生年月" LabelAlign="Right" ></f:DatePicker>
<f:TextBox ID="txtStation" runat="server" Label="岗位" LabelAlign="Right"></f:TextBox>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:TextBox ID="txtAddress" runat="server" Label="地址" LabelAlign="Right"></f:TextBox>
<f:TextBox ID="txtPolice" runat="server" Label="发证机关" LabelAlign="Right"></f:TextBox>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:DatePicker ID="txtValidPeriodStart" runat="server" Label="有效期" LabelAlign="Right" ></f:DatePicker>
<f:DatePicker ID="txtValidPeriodEnd" runat="server" Label="止" LabelAlign="Right" ></f:DatePicker>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:TextBox ID="txtTelephone" runat="server" Label="电话" LabelAlign="Right"></f:TextBox>
<f:TextBox ID="txtJobNumber" runat="server" Label="工号" LabelAlign="Right"></f:TextBox>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:TextBox ID="txtNewAddress" runat="server" Label="现地址" LabelAlign="Right"></f:TextBox>
<f:DatePicker ID="txtRegisterDate" runat="server" Label="登记时间" LabelAlign="Right" ShowTime="true" DateFormatString="yyyy-MM-dd HH:mm:ss"></f:DatePicker>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:TextBox ID="txtCategoryLevel" runat="server" Label="专业等级" LabelAlign="Right"></f:TextBox>
<f:DatePicker ID="txtEntranceDate" runat="server" Label="入场时间" LabelAlign="Right" ShowTime="true" DateFormatString="yyyy-MM-dd HH:mm:ss"></f:DatePicker>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:CheckBox ID="cbIsOutName" runat="server" Label="是否离场"></f:CheckBox>
<f:DatePicker ID="txtLeaveDate" runat="server" Label="出场时间" LabelAlign="Right" ShowTime="true" DateFormatString="yyyy-MM-dd HH:mm:ss"></f:DatePicker>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:CheckBox ID="cbIsBlackListName" runat="server" Label="黑名单"></f:CheckBox>
<f:DatePicker ID="txtUploadTime" runat="server" Label="上传时间" LabelAlign="Right" ShowTime="true" DateFormatString="yyyy-MM-dd HH:mm:ss"></f:DatePicker>
</Items>
</f:FormRow>
</Rows>
<Toolbars>
<f:Toolbar ID="Toolbar1" Position="Bottom" ToolbarAlign="Right" runat="server">
<Items>
<f:ToolbarFill ID="ToolbarFill1" runat="server">
</f:ToolbarFill>
<f:Button ID="btnSave" Icon="SystemSave" runat="server" ToolTip="保存" ValidateForms="SimpleForm1"
OnClick="btnSave_Click">
</f:Button>
<f:Button ID="btnClose" EnablePostBack="false" ToolTip="关闭" runat="server" Icon="SystemClose">
</f:Button>
</Items>
</f:Toolbar>
</Toolbars>
</f:Form>
</form>
</body>
</html>
@@ -0,0 +1,127 @@
using BLL;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace FineUIPro.Web.BoSheng
{
public partial class BoPersonEdit : PageBase
{
#region
/// <summary>
/// 主键
/// </summary>
private string Id
{
get
{
return (string)ViewState["Id"];
}
set
{
ViewState["Id"] = value;
}
}
#endregion
/// <summary>
/// 加载页面
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.btnClose.OnClientClick = ActiveWindow.GetHideReference();
this.Id = Request.Params["id"];
if (!string.IsNullOrEmpty(this.Id))
{
Model.Bo_Sheng_Person person = BLL.BOSHENGService.GetBoPersonById(this.Id);
if (person != null)
{
this.txtName.Text = person.Name;
this.txtDepartName.Text = person.DepartName;
this.txtIdentifyID.Text = person.IdentifyID;
this.rblSex.SelectedValue = person.Sex;
this.txtBirthDay.Text = person.BirthDay.HasValue ? string.Format("{0:yyyy-MM-dd}", person.BirthDay) : "";
this.txtStation.Text = person.Station;
this.txtAddress.Text = person.Address;
this.txtPolice.Text = person.Police;
this.txtValidPeriodStart.Text = string.Format("{0:yyyy-MM-dd}", person.ValidPeriodStart);
this.txtValidPeriodEnd.Text = string.Format("{0:yyyy-MM-dd}", person.ValidPeriodEnd);
this.txtTelephone.Text = person.Telephone;
this.txtJobNumber.Text = person.JobNumber;
this.txtNewAddress.Text = person.NewAddress;
this.txtRegisterDate.Text = person.RegisterDate.HasValue ? string.Format("{0:yyyy-MM-dd HH:mm:ss}", person.RegisterDate) : "";
this.txtCategoryLevel.Text = person.CategoryLevel;
this.txtEntranceDate.Text = person.EntranceDate.HasValue ? string.Format("{0:yyyy-MM-dd HH:mm:ss}", person.EntranceDate) : "";
this.txtLeaveDate.Text = person.LeaveDate.HasValue ? string.Format("{0:yyyy-MM-dd hh:mm:ss}", person.LeaveDate) : "";
if (person.IsOut == "1")
{
this.cbIsOutName.Checked = true;
}
if (person.IsBlackList == "1")
{
this.cbIsBlackListName.Checked = true;
}
this.txtUploadTime.Text = person.UploadTime.HasValue ? string.Format("{0:yyyy-MM-dd HH:mm:ss}", person.UploadTime) : "";
}
}
}
}
/// <summary>
/// 保存按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSave_Click(object sender, EventArgs e)
{
Model.Bo_Sheng_Person person = BLL.BOSHENGService.GetBoPersonById(this.Id);
if (person != null)
{
person.ID = this.Id;
person.Name = this.txtName.Text.Trim();
person.DepartName = this.txtDepartName.Text.Trim();
person.IdentifyID = this.txtIdentifyID.Text.Trim();
person.Sex = this.rblSex.SelectedValue;
person.BirthDay = Funs.GetNewDateTime(this.txtBirthDay.Text.Trim());
person.Station = this.txtStation.Text.Trim();
person.Address = this.txtAddress.Text.Trim();
person.Police = this.txtPolice.Text.Trim();
person.ValidPeriodStart =this.txtValidPeriodStart.Text.Trim();
person.ValidPeriodEnd = this.txtValidPeriodEnd.Text.Trim();
person.Telephone = this.txtTelephone.Text.Trim();
person.JobNumber = this.txtJobNumber.Text.Trim();
person.NewAddress = this.txtNewAddress.Text.Trim();
if (!string.IsNullOrEmpty(this.txtRegisterDate.Text))
{
person.RegisterDate = Convert.ToDateTime(this.txtRegisterDate.Text);
}
person.CategoryLevel = this.txtCategoryLevel.Text.Trim();
if (!string.IsNullOrEmpty(this.txtEntranceDate.Text))
{
person.EntranceDate = Convert.ToDateTime(this.txtEntranceDate.Text);
}
if (!string.IsNullOrEmpty(this.txtLeaveDate.Text))
{
person.LeaveDate = Convert.ToDateTime(this.txtLeaveDate.Text);
}
person.IsOut = this.cbIsOutName.Checked? "1" : "0";
person.IsBlackList = this.cbIsBlackListName.Checked ? "1" : "0";
if (!string.IsNullOrEmpty(this.txtUploadTime.Text))
{
person.UploadTime = Convert.ToDateTime(this.txtUploadTime.Text);
}
BLL.BOSHENGService.UpdateBoPerson(person);
ShowNotify("修改成功!", MessageBoxIcon.Success);
PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
}
}
}
}
+258
View File
@@ -0,0 +1,258 @@
//------------------------------------------------------------------------------
// <自动生成>
// 此代码由工具生成。
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.BoSheng {
public partial class BoPersonEdit {
/// <summary>
/// form1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// PageManager1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.PageManager PageManager1;
/// <summary>
/// SimpleForm1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Form SimpleForm1;
/// <summary>
/// txtName 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtName;
/// <summary>
/// txtDepartName 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtDepartName;
/// <summary>
/// txtIdentifyID 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtIdentifyID;
/// <summary>
/// rblSex 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.RadioButtonList rblSex;
/// <summary>
/// txtBirthDay 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DatePicker txtBirthDay;
/// <summary>
/// txtStation 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtStation;
/// <summary>
/// txtAddress 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtAddress;
/// <summary>
/// txtPolice 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtPolice;
/// <summary>
/// txtValidPeriodStart 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DatePicker txtValidPeriodStart;
/// <summary>
/// txtValidPeriodEnd 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DatePicker txtValidPeriodEnd;
/// <summary>
/// txtTelephone 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtTelephone;
/// <summary>
/// txtJobNumber 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtJobNumber;
/// <summary>
/// txtNewAddress 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtNewAddress;
/// <summary>
/// txtRegisterDate 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DatePicker txtRegisterDate;
/// <summary>
/// txtCategoryLevel 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtCategoryLevel;
/// <summary>
/// txtEntranceDate 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DatePicker txtEntranceDate;
/// <summary>
/// cbIsOutName 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.CheckBox cbIsOutName;
/// <summary>
/// txtLeaveDate 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DatePicker txtLeaveDate;
/// <summary>
/// cbIsBlackListName 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.CheckBox cbIsBlackListName;
/// <summary>
/// txtUploadTime 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DatePicker txtUploadTime;
/// <summary>
/// Toolbar1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar1;
/// <summary>
/// ToolbarFill1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarFill ToolbarFill1;
/// <summary>
/// btnSave 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnSave;
/// <summary>
/// btnClose 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnClose;
}
}
+2
View File
@@ -30,6 +30,8 @@
<f:Button ID="btnOut" OnClick="btnOut_Click" runat="server" ToolTip="导出" Icon="FolderUp"
EnableAjax="false" DisableControlBeforePostBack="false">
</f:Button>
<f:Button ID="btnRefresh" runat="server" Icon="ArrowRefresh" ToolTip="同步" OnClick="btnRefresh_Click">
</f:Button>
</Items>
</f:Toolbar>
</Toolbars>
@@ -90,5 +90,17 @@ namespace FineUIPro.Web.BoSheng
this.GridBind();
}
#endregion
#region
/// <summary>
/// 同步培训记录
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnRefresh_Click(object sender, EventArgs e)
{
BOSHENGMonitorService.AddData(null, null);
}
#endregion
}
}
+9
View File
@@ -93,6 +93,15 @@ namespace FineUIPro.Web.BoSheng {
/// </remarks>
protected global::FineUIPro.Button btnOut;
/// <summary>
/// btnRefresh 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnRefresh;
/// <summary>
/// labNumber 控件。
/// </summary>