You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

125 lines
2.5 KiB

using BWP.B3Frameworks.Attributes;
using BWP.B3Sale.BO;
using BWP.Web.Utils;
using Forks.EnterpriseServices.DataForm;
using Forks.Utils.TypeDescs;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TSingSoft.WebControls2;
using TSingSoft.WebPluginFramework;
namespace BWP.Web.Pages
{
public class YunKenDFEntityLink : DFControl, IDFFieldEditor
{
public YunKenDFEntityLink() : base()
{
}
public void InitEntityType(Type type)
{
mEntityType = type;
}
Type mEntityType;
string mLinkIDField;
public YunKenDFEntityLink(Type entityType, string linkIDField )
{
mEntityType = entityType;
mLinkIDField = linkIDField;
}
internal string Text
{
get { return (string)ViewState["Text"]; }
set { ViewState["Text"] = value; }
}
public void ApplyValueToUI(object value)
{
Text = string.Empty;
if (value == null)
{
return;
}
var str = value as string;
if (string.IsNullOrEmpty(str))
{
return;
}
DFInfo info = DFField.DFInfo as DFInfo;
if (info == null)
{
return;
}
IDotNetTypeDesc type = info.DFClass as IDotNetTypeDesc;
if (type == null)
{
return;
}
//+info.DFClass { BWP.B3Sale.BO.SaleOutStore}
//Forks.Utils.TypeDescs.ITypeDesc { Forks.Utils.TypeDescs.DotNetTypeDesc}
var id = WebBLUtil.GetDmoProperty<object>(type.Type, mLinkIDField, new Tuple<string, object>(DFField.Name, str));
if (id == null)
{
return;
}
var url = EditUrlAttribute.GetUrl(mEntityType);
if (string.IsNullOrEmpty(url))
{
throw new Exception(string.Format("未能得到对象{0}的编辑页面", DFInfo.Get(mEntityType).LogicName));
}
url = AspUtil.AddTimeStampToUrl(WpfPageUrl.ToGlobal(url));
url = AspUtil.AddParamToUrl(url, "ID", id.ToString());
Text = string.Format("<a href='#' onclick=\"javascript:OpenUrlInTopTab('{0}')\">{1}</a>", url, value);
}
public object GetValueFromUI()
{
return null;
}
public bool Readonly
{
get
{
return true;
}
set
{
}
}
public void ApplyToUI(object dfObject)
{
ApplyValueToUI(DFField.GetValue(dfObject));
}
public void GetFromUI(object dfObject)
{
}
public void ValidInput()
{
}
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
writer.Write(Text);
}
}
}