control.cs
来自「《精通ASP.NET2.0网络应用系统开发》书中的源码」· CS 代码 · 共 389 行
CS
389 行
using System;
using System.Data;
using System.Collections;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
namespace WebDBManage
{
/// <summary>
/// 定义全局变量的类
/// </summary>
public class GlobalVars
{
/// 常量定义
public static readonly int TextBoxWidth = 150;
public static readonly int DropDownListWidth = 156;
public static readonly int LabelWidth = 150;
public static readonly int BaseWith = 0;
public static readonly int BaseHeight = 10;
public static readonly int InWidth = 250;
public static readonly int InHeight = 30;
public static readonly int MutilTextBoxHeight = 100;
}
/// <summary>
/// Summary description for Control
/// </summary>
public class Control
{
private Panel m_panel;
private string m_tableName;
/// <summary>
/// 定义表名称属性
/// </summary>
public String TableName
{
get
{
return (m_tableName);
}
set
{
m_tableName = value;
}
}
/// <summary>
/// 定义控件所属的Panel
/// </summary>
public Panel ControlPanel
{
get
{
return (m_panel);
}
set
{
m_panel = value;
}
}
/// <summary>
/// 创建新控件
/// </summary>
private WebControl CreateWebControl(String controlID,int controlType,int controlWidth)
{
Label label;
TextBox tbox;
DropDownList dlist;
switch(controlType)
{
case 0: ///普遍标签控件
{
label = new Label();
label.ID = controlID;
label.Width = GlobalVars.LabelWidth;
return ((WebControl)label);
}
case 1: ///普通单行文本框
{
tbox = new TextBox();
tbox.ID = controlID;
tbox.Width = controlWidth > 0 ? controlWidth : GlobalVars.TextBoxWidth;
return ((WebControl)tbox);
}
case 2: ///多行文本框
{
tbox = new TextBox();
tbox.ID = controlID;
tbox.TextMode = TextBoxMode.MultiLine;
tbox.Height = GlobalVars.MutilTextBoxHeight;
tbox.Width = controlWidth > 0 ? controlWidth : GlobalVars.TextBoxWidth;
return ((WebControl)tbox);
}
case 3: ///密码输入框
{
tbox = new TextBox();
tbox.ID = controlID;
tbox.TextMode = TextBoxMode.Password;
tbox.Width = controlWidth > 0 ? controlWidth : GlobalVars.TextBoxWidth;
return ((WebControl)tbox);
}
case 4: ///创建普通下拉框
{
dlist = new DropDownList();
dlist.ID = controlID;
dlist.Width = controlWidth > 0 ? controlWidth : GlobalVars.DropDownListWidth;
///绑定Combobox控件的数据
SqlServerDB sqlServer = new SqlServerDB();
Data data = new Data();
data.BindDropdownListBaseData(dlist,sqlServer.GetDropDownListDSByBase(),DropdownListBase.TABLENAME + "='"
+ m_tableName + "' AND " + DropdownListBase.FIELDCODE + "='" + controlID + "'");
return ((WebControl)dlist);
}
case 5: ///创建父下拉框
{
dlist = new DropDownList();
dlist.ID = controlID;
dlist.Width = controlWidth > 0 ? controlWidth : GlobalVars.DropDownListWidth;
dlist.SelectedIndexChanged += new EventHandler(BindChildDropDownListData);
///绑定Combobox控件的数据
SqlServerDB sqlServer = new SqlServerDB();
Data data = new Data();
data.BindDropdownListBaseData(dlist,sqlServer.GetDropDownListDSByBase(),DropdownListBase.TABLENAME + "='"
+ m_tableName + "' AND " + DropdownListBase.FIELDCODE + "='" + controlID + "'");
return ((WebControl)dlist);
}
case 6: ///创建子下拉框
{
dlist = new DropDownList();
dlist.ID = controlID;
dlist.Width = controlWidth > 0 ? controlWidth : GlobalVars.DropDownListWidth;
///绑定Combobox控件的数据
SqlServerDB sqlServer = new SqlServerDB();
Data data = new Data();
data.BindDropdownListBaseData(dlist,sqlServer.GetDropDownListDSByChild(),DropdownListBase.TABLENAME + "='"
+ m_tableName + "' AND " + DropdownListBase.FIELDCODE + "='" + controlID + "'");
return ((WebControl)dlist);
}
case 7: ///创建既有父下拉框又有子下来框的下拉框
{
dlist = new DropDownList();
dlist.ID = controlID;
dlist.Width = controlWidth > 0 ? controlWidth : GlobalVars.DropDownListWidth;
dlist.SelectedIndexChanged += new EventHandler(BindChildDropDownListData);
///绑定Combobox控件的数据
SqlServerDB sqlServer = new SqlServerDB();
Data data = new Data();
data.BindDropdownListBaseData(dlist,sqlServer.GetDropDownListDSByChild(),DropdownListBase.TABLENAME + "='"
+ m_tableName + "' AND " + DropdownListBase.FIELDCODE + "='" + controlID + "'");
return ((WebControl)dlist);
}
case 8: ///创建时间选择框
{
tbox = new TextBox();
///创建时间控件
return ((WebControl)tbox);
}
case 9: ///布尔值下拉选择控件
{
dlist = new DropDownList();
dlist.ID = controlID;
dlist.Width = controlWidth > 0 ? controlWidth : GlobalVars.DropDownListWidth;
///绑定Combobox控件的数据
SqlServerDB sqlServer = new SqlServerDB();
Data data = new Data();
data.BindDropDownListBoolData(dlist,sqlServer.GetBoolTableDS());
return ((WebControl)dlist);
}
default:
return ((WebControl)null);
}
}
/// <summary>
/// 在Panel上创建表的所有控件
/// </summary>
public void CreatePanelControl(Panel panel,ref ArrayList controlList)
{
panel.Controls.Clear();
controlList.Clear();
SqlServerDB sqlServer = new SqlServerDB();
DataSet ds = sqlServer.GetSystemTableDS();
if (ds == null) return;
if (ds.Tables.Count <= 0) return;
WebControl control;
short tabindex = 0;
string sTableString = "<table ID=\"ControlTable\" runat=\"server\" class=\"GbText\" style=\"BORDER-COLLAPSE: collapse\""
+ " borderColor=\"#93bee2\" cellSpacing=\"0\" cellPadding=\"0\" width=\"100%\""
+ " border=\"1\">";
string startTrTdString = "<tr><td align=\"right\" width=\"150\">";
string endTrTdString = "</td></tr>";
panel.Controls.Add(new LiteralControl(sTableString));
foreach (DataRow row in ds.Tables[0].Rows)
{
if (m_tableName == row[SystemTable.TABLENAME].ToString() && GlobalConst.ONE == row[SystemTable.ISVISIBLE].ToString())
{
panel.Controls.Add(new LiteralControl(startTrTdString + row[SystemTable.FIELDDESN].ToString() + ":"));
panel.Controls.Add(new LiteralControl("</td><td align=\"left\">"));
control = CreateWebControl(row[SystemTable.FIELDCODE].ToString(),
Int32.Parse(row[SystemTable.CONTROLTYPEID].ToString()),
Int32.Parse(row[SystemTable.WIDTH].ToString()));
control.TabIndex = tabindex++;
control.CssClass = GetCssClass(row[SystemTable.CONTROLTYPEID].ToString());
controlList.Add(control);
panel.Controls.Add(control);
panel.Controls.Add(new LiteralControl(endTrTdString));
///创建换行控件
//panel.Controls.Add(new LiteralControl("<" + "br" + ">"));
}
}
panel.Controls.Add(new LiteralControl("</table>"));
}
public void CreateTableControl(Table table)
{
SqlServerDB sqlServer = new SqlServerDB();
DataSet ds = sqlServer.GetSystemTableDS();
if (ds == null) return;
if (ds.Tables.Count <= 0) return;
WebControl control;
short tabindex = 0;
foreach (DataRow row in ds.Tables[0].Rows)
{
if (m_tableName == row[SystemTable.TABLENAME].ToString() && GlobalConst.ONE == row[SystemTable.ISVISIBLE].ToString())
{
TableRow trow = new TableRow();
TableCell lcell = new TableCell();
TableCell rcell = new TableCell();
///
lcell.Controls.Add(new LiteralControl(row[SystemTable.FIELDDESN].ToString() + ":"));
control = CreateWebControl(row[SystemTable.FIELDCODE].ToString(),
Int32.Parse(row[SystemTable.CONTROLTYPEID].ToString()),
Int32.Parse(row[SystemTable.WIDTH].ToString()));
control.TabIndex = tabindex++;
control.CssClass = GetCssClass(row[SystemTable.CONTROLTYPEID].ToString());
rcell.Controls.Add(control);
trow.Cells.Add(lcell);
trow.Cells.Add(rcell);
table.Rows.Add(trow);
}
}
}
/// <summary>
/// 父控件触发的事件
/// </summary>
private void BindChildDropDownListData(object sender,System.EventArgs e)
{
DropDownList dlist = ((DropDownList)sender);
String cmdText = DropdownListChild.TABLENAME + "='" + m_tableName + "' AND "
+ DropdownListChild.FIELDCODE + "='" + dlist.ID + "'";
SqlServerDB sqlServer = new SqlServerDB();
DataSet ds = sqlServer.GetDropDownListDSByChild();
if (ds == null) return;
if (ds.Tables.Count <= 0) return;
DataRow[] rowList = ds.Tables[0].Select(cmdText);
foreach (DataRow row in rowList)
{
DropDownList childlist = (DropDownList)FindControl(ControlPanel,row["TableCode"].ToString());
String tempcmdText = "select distinct " + row[DropdownListChild.TEXT].ToString() + ", "
+ row[DropdownListChild.VALUE].ToString() + " from "
+ row[DropdownListChild.SELECTTABLE].ToString()
+ " where " + row[DropdownListChild.FATHERVALUE].ToString() + "='"
+ dlist.SelectedValue + "'";
childlist.DataSource = sqlServer.GetDataSet(tempcmdText);
childlist.DataTextField = DropdownListChild.TEXT;
childlist.DataValueField = DropdownListChild.VALUE;
childlist.DataBind();
EventArgs childe = new EventArgs();
BindChildDropDownListData(dlist,childe);
}
}
/// <summary>
/// 绑定子控件的数据
/// </summary>
private void BindDropDownListChildData(DropDownList dlist,DataSet ds,String cmdText)
{
if (ds == null) return;
if (ds.Tables.Count <= 0) return;
String sFieldCode = "";
String sFatherValue = "";
String sTableName = "";
String sText = "";
String sValue = "";
DataRow[] rowList = ds.Tables[0].Select(cmdText);
if (null != rowList && rowList.Length >= 1)
{
sFieldCode = rowList[0][DropdownListChild.FIELDCODE].ToString();
sFatherValue = rowList[0][DropdownListChild.FATHERVALUE].ToString();
sTableName = rowList[0][DropdownListChild.TABLENAME].ToString();
sText = rowList[0][DropdownListChild.TEXT].ToString();
sValue = rowList[0][DropdownListChild.VALUE].ToString();
}
DropDownList parentbox = (DropDownList)FindControl(ControlPanel,sFieldCode);
String parentvalue = parentbox.Items.Count > 0 ? parentbox.Items[parentbox.SelectedIndex].ToString() : null;
String tempcmdText = "SELECT DISTINCT " + sText + ", " + sValue + " FROM ["
+ sTableName + "] WHERE " + sFieldCode + "='" + parentvalue + "'";
SqlServerDB sqlServer = new SqlServerDB();
DataSet dssqlServer = sqlServer.GetDataSet(tempcmdText);
if (dssqlServer == null) return;
if (dssqlServer.Tables.Count <= 0) return;
dlist.DataSource = dssqlServer;
dlist.DataTextField = sText;
dlist.DataValueField = sValue;
dlist.DataBind();
}
/// <summary>
/// 在Panel中找到某个控件
/// </summary>
public WebControl FindControl(Panel panel,String controlName)
{
foreach (WebControl control in panel.Controls)
{
if (control.ID == controlName)
{
return (control);
}
}
return ((WebControl)null);
}
private string GetCssClass(string controlTypeID)
{
switch (controlTypeID)
{
case "0":
return "Text";
case "1":
case "2":
case "3":
return "InputCss";
case "4":
case "5":
case "6":
case "7":
case "8":
case "9":
return "SelectSta";
default: return "";
}
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?