using System;
using System.Text;
using System.Web.UI.WebControls;
using System.Web.UI;
using Win = System.Windows.Forms;
using CYQ.Data.Table;
using System.Collections.Generic;
using CYQ.Data.SQL;
using System.Data;
using System.ComponentModel;
using CYQ.Data.Extension;
using System.Reflection;
using CYQ.Data.Tool;
using CYQ.Data.Xml;
using System.Xml;
namespace CYQ.Data.UI
{
///
/// UI 对外接口
///
public partial class MActionUI
{
#region UI操作
///
/// 批量对所有控件自动赋值【默认前缀为(txt,ddl,chb),可通过调用SetAutoPrefix调整】
///
/// 父控件(可设置:this)
/// 可选(其它的父控件)
///
/// action.SetAutoPrefix("txt","ddl");//设置控件的前缀
/// action.UI.SetToAll(this);
///
public void SetToAll(object parentControl, params object[] otherParentControls)
{
SetAll(parentControl, otherParentControls);
}
///
/// 将值赋给控件
///
/// 控件对象
///
/// 示例:action.UI.SetTo(txtUserName);//同于:txtUserName.Text=action.Get<string>(Users.UserName);
///
public void SetTo(object control)
{
Set(control, null, -1, null);
}
/// 指定对某个属性赋值
public void SetTo(object control, string controlPropName)
{
Set(control, controlPropName, -1, null);
}
/// 设置控件是否可用
public void SetTo(object control, string controlPropName, bool isControlEnabled)
{
Set(control, controlPropName, isControlEnabled ? 1 : 0, null);
}
///
/// 从控件中取值
///
/// 控件对象
///
/// 示例:action.UI.GetFrom(txtUserName);//获取TextBox默认Text属性的值
///
public void GetFrom(object control)
{
GetFrom(control, null, null);
}
/// 从指定的属性里取值
public void GetFrom(object control, string controlPropName)
{
GetFrom(control, controlPropName, null);
}
/// 若控件无值,则取此默认值
public void GetFrom(object control, string controlPropName, object defaultValue)
{
GetFrom2(control, controlPropName, defaultValue);
}
internal string GetFrom2(object control, string controlPropName, object defaultValue)
{
string value = Get(control, controlPropName, defaultValue);
if (OnAfterGetFromEvent != null)
{
OnAfterGetFromEvent(value);
}
return value;
}
///
/// 绑定DrowDownList等列表控件
///
/// (下拉)列表控件
///
public void Bind(object control)
{
Bind(control, string.Empty, MBindUI.GetID(control), _Data.Columns.FirstPrimary.ColumnName);
}
///
/// 绑定DrowDownList等列表控件
///
public void Bind(object control, string where)
{
Bind(control, where, MBindUI.GetID(control), _Data.Columns.FirstPrimary.ColumnName);
}
///
/// 绑定下拉等列表,控件需要继承自:ListControl。
///
/// DropDown/CheckBoxList/RadioButtonList等
/// 对表的数据进行过滤如:"ID>15 and Url='cyqdata.com'"
/// 绑定时显示的字段名[默认字段名取自控件的ID(去掉前三个字母前缀)]
/// 绑定时显示字段对应的值[默认值的字段名为:ID]
public void Bind(object control, object where, object text, object value)
{
string sql = _SqlCreate.GetBindSql(where, text, value);
MDataTable mTable = null;
switch (_DbBase.dalType)
{
case DalType.Txt:
case DalType.Xml:
NoSqlCommand cmd = new NoSqlCommand(sql, _DbBase);
mTable = cmd.ExeMDataTable();
cmd.Dispose();
break;
default:
mTable = _DbBase.ExeDataReader(sql, false);
// dalHelper.ResetConn();//重置Slave
break;
}
bool result = (mTable != null && mTable.Rows.Count > 0);
if (result)
{
MBindUI.BindList(control, mTable);
}
}
///
/// 自动获取值前缀设置,可传多个前缀[至少1个]
///
/// 第一个前缀[必须]
/// 后面N个前缀[可选]
public void SetAutoPrefix(string autoPrefix, params string[] otherPrefix)
{
autoPrefixList.Clear();
string[] items = autoPrefix.Split(',');
foreach (string item in items)
{
if (!autoPrefixList.Contains(item))
{
autoPrefixList.Add(item);
}
}
foreach (string item in otherPrefix)
{
if (!autoPrefixList.Contains(item))
{
autoPrefixList.Add(item);
}
}
}
///
/// (Win或WPF)自动获取值父控件设置,可传多个父控件[至少1个]
///
/// 第一个父控件名称[必须,可传:this]
/// 后面N个[可选]
public void SetAutoParentControl(object parent, params object[] otherParent)
{
if (autoParentList == null)
{
autoParentList = new List