侧边栏壁纸
  • 累计撰写 45 篇文章
  • 累计创建 1 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

【042】UI界面的一些通用代码

绀香廿九
2023-11-07 / 0 评论 / 0 点赞 / 38 阅读 / 16700 字

设置状态按钮的水印

参考:【003】U9状态按钮水印效果

列表跳转

private void BtnList_Click_Extend(object sender, EventArgs e)
{
	this.Action.CurrentPart.NavigatePage("列表的URL", null);
}

开启个性化

public void AfterCreateChildControls()
{
	UFIDA.U9.UI.PDHelper.PersonalizationHelper.SetPersonalizationEnable(this, true);
}

查找代码

private void BtnFind_Click_Extend(object sender, EventArgs e)
{
	if (!string.IsNullOrEmpty(wpFindID.Value)) 
		this.Action.NavigateAction.MovePageAt(null, long.Parse(wpFindID.Value));
}

public void AfterCreateChildControls()
{
	PDFormMessage.ShowConfirmDialog(this.Page, "d6553293-1bfa-4443-9920-630fba59a428", Title, wpFindID.ClientID, this.BtnFind);
}

移除选中行

private void RemoveSelectLine()
{
	var selectRecords = this.Model.MainView.SelectRecords;
	if (selectRecords?.Count > 0)
	{
		foreach (var item in selectRecords)
		{
			if (item.PrimaryKey > 0)
				item.DataRecordState = DataRowState.Deleted;
			else
				this.Model.MainView.Records.Remove(item);
		}
	}
}

公共方法

public class CommonVoid
{
	public static decimal ConvertToDecimal(object o)
	{
		decimal v;
		decimal.TryParse(o?.ToString(), out v);
		return v;
	}

	public static long ConvertToInt64(object o)
	{
		long v;
		long.TryParse(o?.ToString(), out v);
		return v;
	}

	public static int ConvertToInt32(object o)
	{
		int v;
		int.TryParse(o?.ToString(), out v);
		return v;
	}

	public static DateTime? ConvertToDateTime(object o)
	{
		if (o == null) return null;
		DateTime v;
		if (DateTime.TryParse(o?.ToString(), out v) == false) return null;
		return v;
	}

	public static string ConvertToString(object o)
	{
		return o?.ToString();
	}

	/// <summary>
	/// 按钮启用/禁用
	/// </summary>
	/// <param name="enabled">true 启用,false 禁用</param>
	/// <param name="btns"></param>
	public static void UFButtonEnabled(bool enabled, params IUFButton[] btns)
	{
		foreach (var btn in btns)
		{
			btn.Enabled = enabled;
		}
	}

	/// <summary>
	/// 控件只读/可编辑
	/// </summary>
	/// <param name="readOnly">true 只读,fasel 可编辑</param>
	/// <param name="controls"></param>
	public static void ControlReadOnly(bool readOnly, params IUFControl[] controls)
	{
		foreach (IUFControl control in controls)
		{
			(control as IUIFieldBindingDataBindControl).ReadOnly = readOnly;
		}
	}

	public static void ShowAlertMessage(IPart part, string theMessage)
	{
		BaseWebForm webPart = part as BaseWebForm;
		if (webPart == null) return;

		string alertScript = GetAlertScript(theMessage);
		AtlasHelper.RegisterAtlasStartupScript(webPart.Page, webPart.Page.GetType(), Guid.NewGuid().ToString(), alertScript, false);
	}

	private static string GetAlertScript(string theMessage)
	{
		theMessage = ReplaceLawlessCharForShowAlertScript(theMessage);
		return ("<script language=\"javascript\">\n alert('" + theMessage + "'); </script>\n");
	}
	private static string ReplaceLawlessCharForShowAlertScript(string message)
	{
		message = message.Replace(@"\r", "\r");
		message = message.Replace(@"\n", "\n");
		message = message.Replace("\r", @"\r");
		message = message.Replace("\n", @"\n");
		return message;
	}

	public static void ShowConfirmMessage(IPart part, string theMessage)
	{
		BaseWebForm webPart = part as BaseWebForm;
		if (webPart == null) return;

		string ConfirmScript = GetConfirmScript(theMessage);
		AtlasHelper.RegisterAtlasStartupScript(webPart.Page, webPart.Page.GetType(), Guid.NewGuid().ToString(), ConfirmScript, false);
	}

	private static string GetConfirmScript(string theMessage)
	{
		theMessage = ReplaceLawlessCharForShowAlertScript(theMessage);
		return ("<script language=\"javascript\">\n Confirm('" + theMessage + "'); </script>\n");
	}


	/// <summary>
	/// 设置控件在卡片容器中的布局
	/// </summary>
	/// <param name="container">卡片容器</param>
	/// <param name="ctrl">增加的控件</param>
	/// <param name="x">布局横坐标</param>
	/// <param name="y">布局纵坐标</param>
	public static void Layout(UFSoft.UBF.UI.ControlModel.IContainer container, IUFControl ctrl, uint x, uint y)
	{
		Layout(container, ctrl, x, y, 1, 1, Unit.Pixel(0), Unit.Pixel(0), true);
	}

	/// <summary>
	/// 设置控件在卡片容器中的布局
	/// </summary>
	/// <param name="container">卡片容器</param>
	/// <param name="ctrl">增加的控件</param>
	/// <param name="x">布局横坐标</param>
	/// <param name="y">布局纵坐标</param>
	/// <param name="width">控件宽</param>
	/// <param name="height">控件高</param>
	public static void Layout(UFSoft.UBF.UI.ControlModel.IContainer container, IUFControl ctrl, uint x, uint y, int width, int height)
	{
		Layout(container, ctrl, x, y, 1, 1, Unit.Pixel(width), Unit.Pixel(height), false);
	}


	/// <summary>
	/// 设置控件在卡片容器中的布局
	/// </summary>
	/// <param name="container">卡片容器</param>
	/// <param name="ctrl">增加的控件</param>
	/// <param name="x">布局横坐标</param>
	/// <param name="y">布局纵坐标</param>
	/// <param name="xspan">单元格横向跨度</param>
	/// <param name="yspan">单元格纵向跨度</param>
	/// <param name="width">控件宽</param>
	/// <param name="height">控件高</param>
	/// <param name="isAutoSize">是否自适应大小</param>
	public static void Layout(UFSoft.UBF.UI.ControlModel.IContainer container, IUFControl ctrl, uint x, uint y, int xspan, int yspan,
		Unit width, Unit height, bool isAutoSize)
	{
		IGridLayout gl = container.Layout as IGridLayout;
		if (gl == null) return;

		GridLayoutInfo glInfo = new GridLayoutInfo(x, y, (uint)xspan, (uint)yspan, width, height);
		glInfo.AutoSize = isAutoSize;
		gl.Controls.Add((Control)ctrl, glInfo);

	}

	/// <summary>
	/// 在父容器中查找控件
	/// </summary>
	/// <param name="parentControl">父容器</param>
	/// <param name="control">控件</param>
	/// <returns>找到的控件</returns>
	public static IUFControl FindControl(IPart part, string parentControl, string control)
	{
		IUFCard card = (IUFCard)part.GetUFControlByName(part.TopLevelContainer, parentControl);
		if (card == null)
			return null;

		foreach (IUFControl ctrl in card.Controls)
		{
			if (ctrl.ID.Equals(control, StringComparison.OrdinalIgnoreCase))
			{
				return ctrl;
			}
		}
		return null;
	}

	/// <summary>
	/// 生成控件回调按钮
	/// </summary>
	/// <param name="card">按钮所在的Card</param>
	/// <param name="id">按钮ID</param>
	/// <param name="clickEvent">按钮回调事件</param>
	public static void LayoutCallBack(IUFCard card, string id, Action<object, EventArgs> clickEvent)
	{
		IUFButton callback = new UFWebButtonAdapter { ID = id, Visible = false };
		card.Controls.Add(callback);
		Layout(card, callback, 0, 0);
		callback.Click += new EventHandler(clickEvent);
	}

	/// <summary>
	/// 查找回调控件按钮
	/// </summary>
	/// <param name="card">按钮所在的Card</param>
	/// <param name="id">按钮ID</param>
	/// <returns></returns>
	public static IUFButton GetCallBackBtn(IUFCard card, string id)
	{
		var ctrls = card.Controls as UFControlCollection;
		// 从后往前找,因为Controls.Add会添加到最后面
		for (int i = ctrls.Count - 1; i >= 0; i--)
		{
			if (ctrls[i].ID == id) return ctrls[i] as IUFButton;
		}
		return null;
	}

}

打开弹窗

private void BtnXXX_Click_Extend(object sender, EventArgs e)
{
	// 直接打开弹窗
	this.ShowModalDialog("ac3322bd-b74e-409a-a687-a0d5697dd214", "窗体标题", "610", "130", null, null, true);
		
	// 弹窗窗体并在关闭弹窗时进入回调
	IUFButton btnCall = CommonVoid.GetCallBackBtn(Card0, "BtnCallBack");
	this.ShowAtlasModalDialog(btnCall, "ac3322bd-b74e-409a-a687-a0d5697dd214", "窗体标题", "472", "160", "", null, true, false, false);
}

public void AfterCreateChildControls()
{
	// 创建回调弹窗
	CommonVoid.LayoutCallBack(Card0, "BtnCallBack", BtnCallBack);      
}

// 弹窗回调函数
private void PullOrderWindowCallBack(object sender, EventArgs e)
{
	// 处理弹窗返回的数据
	if (this.CurrentSessionState["XXX"] != null && base.CurrentSessionState["XXX"] is XXXXXX)
	{
		XXXXXX res = (XXXXXX)base.CurrentSessionState["XXX"];
		
		// 处理res的代码......
		
		this.CurrentSessionState["XXX"] = null;
	}
	
	// 清除一些关闭弹窗就要清空的CurrentSessionState,右上角关闭按钮也会触发回调
	this.CurrentSessionState["XXXData1"] = null;
	this.CurrentSessionState["XXXData2"] = null;
}

初始化列表的行号

 private void AfterCreateChildControls()
{
	// 设置默认行号
	GetProfileValueProxy bpObj = new GetProfileValueProxy();
	bpObj.ProfileCode = "SysLineNo";
	PVDTOData pVDTOData = bpObj.Do();
	//行GRID
	IAutoRowNo rowNo = this.DataGrid6.Columns["DocLineNo"] as IAutoRowNo;
	if (rowNo != null)
	{
		rowNo.Sequence = true;
		rowNo.SequenceStep = Convert.ToInt32(pVDTOData.ProfileValue);
		rowNo.SequenceStart = Convert.ToInt32(pVDTOData.ProfileValue);
	}
}

个性化提示

private void AfterCreateChildControls()
{
	PDFormMessage.ShowDelConfirmDialog(this.Page, PDResource.DeleteConfirmInfo, Title, this.BtnDelete);
	//PDFormMessage.ShowConfirmDialog(this.Page, "是否审核!", "审核提示", this.BtnApprove);
	PDFormMessage.ShowConfirmDialog(this.Page, "是否弃审!", "弃审提示", this.BtnUndoApprove);
}

注册扩展字段

private void AfterCreateChildControls()
{
	//扩展字段 --单头实体扩展字段
	FlexFieldHelper.SetDescFlexField(this.FlexFieldPicker0, this.Model.MainView);
	//扩展字段 --单行实体扩展字段
	FlexFieldHelper.SetDescFlexField(this.DataGrid6, this.DataGrid6.Columns.Count - 1);
}

CallBack事件注册

参考:【028】CallBack事件注册

PostBack事件注册

参考:【029】PostBack事件注册

0

评论区