全编辑WebGrid控件LrcGrid(5)—— 构造函数、变量和属性
LrcGrid从System.Web.UI.WebControls.Table继承,实现INamingContainer接口
元数据属性和构造函数:元数据声明了控件的标签和默认属性,构造函数为控件一些属性指定了默认值.
[
ToolboxData("<{0}:LrcGrid runat=server></{0}:LrcGrid>"),
DefaultProperty("SelSql")
]
public class LrcGrid : System.Web.UI.WebControls.Table,INamingContainer
{
public LrcGrid() : base()
{
Font.Name = "verdana";
Font.Size = FontUnit.Point(8);
BackColor = Color.White;
ForeColor = Color.Black;
BorderStyle = BorderStyle.Outset;
BorderWidth = Unit.Parse("1px");
PagerStyle = PagerStyle.NextPrev;
CurrentPageIndex = 0;
ItemsPerPage = 15;
TotalPages = -1;
IsPager = true;
}
......
声明私有变量:
和分页相关的私有变量
#region 和分页有关的私有变量
// ***********************************************************************
private string CurrentPageText = "<b>第</b> {0} <b>页,共</b> {1}<b>页</b>";
private string NoPageSelectedText = "无选择页.";
private string QueryPageCommandText = "SELECT * FROM " +
"(SELECT TOP {0} * FROM " +
"(SELECT TOP {1} * FROM ({2}) AS t0 ORDER BY {3} {4}) AS t1 " +
"ORDER BY {3} {5}) AS t2 " +
"ORDER BY {3}";
private string QueryCountCommandText = "SELECT COUNT(*) FROM ({0}) AS t0";
// ***********************************************************************
#endregion
和属性有关的私有变量:
char[] chra = {','};
char[] chrb = {'|'};
//private DataSet _ds;
//private DataTable _dt;
private string tabN;
private string _priKey;
private string _editCol = "1";
private string _colsStr = "";
private string _colsStrCN = "";
private string _fkCol = "";
private bool _isSort = true;
private bool _isRowEdit;
private bool _isTabChg = true;
private bool _isDel;
private bool _isAdd;
private string _conn;
private Color _titColor;
控件属性,属性都有注释,不再细述:
/// <summary>
/// 外键指示
/// </summary>
[
Category("关键"),
Description("外键.格式:本表列名|外键列名|要显示的外键列名|外键表名,.....")
]
public string FkCol
{
get{return _fkCol;}
set{_fkCol = value;}
}
/// <summary>
/// 是否显示删除功能
/// </summary>
[
Category("关键"),
Description("是否显示删除功能")
]
public bool IsDel
{
get{return _isDel;}
set{_isDel = value;}
}
/// <summary>
/// 是否显示添加功能
/// </summary>
[
Category("关键"),
Description("是否显示添加功能")
]
public bool IsAdd
{
get{return _isAdd;}
set{_isAdd = value;}
}
/// <summary>
/// 公共属性:显示列名
/// </summary>
[
Category("关键"),
Description("显示列名")
]
public string ColsStrCN
{
get{return _colsStrCN;}
set{_colsStrCN = value;}
}
/// <summary>
/// 主表的表名
/// </summary>
[
Category("关键"),
Description("主表的表名")
]
public string TabN
{
get{return tabN;}
set{tabN = value;}
}
/// <summary>
/// 主表的列名列表
/// </summary>
[
Category("关键"),
Description("主表的列名列表")
]
public string ColsStr
{
get{return _colsStr;}
set{_colsStr = value;}
}
/// <summary>
/// 是否用回车键跳转焦点
/// </summary>
[
Category("关键"),
Description("是否用回车键跳转焦点")
]
public bool IsTabChg
{
get{return _isTabChg;}
set{_isTabChg = value;}
}
/// <summary>
/// 选择SQL语句.注意列名不能用'*'
/// </summary>
[
Category("关键"),
Description("选择SQL语句.注意列名不能用'*'")
]
public string SelSql
{
get{return (string)ViewState["lrcSelSql"];}
set{ViewState["lrcSelSql"] = value;}
}
/// <summary>
/// 主键列名,如有多个请用","隔开
/// </summary>
[
Category("关键"),
Description("主键列名,如有多个请用\",\"隔开")
]
public string PriKey
{
get{return _priKey;}
set{_priKey = value;}
}
/// <summary>
/// 标题行颜色
/// </summary>
[
Category("关键"),
Description("标题行颜色")
]
public Color TitColor
{
get{ return _titColor;}
set{ _titColor = value;}
}
/// <summary>
/// 要进行编辑的列,列名用","隔开,0为不编辑,1为全编辑
/// </summary>
[
Category("关键"),
Description("要进行编辑的列,列名用\",\"隔开,0为不编辑,1为全编辑")
]
public string EditCol
{
get{return _editCol;}
set{_editCol = value;}
}
[
Browsable(false)
]
public string UpdSql
{
get{return ((HtmlInputHidden)(this.FindControl("lrcHid_UpdSql"))).Value;}
}
/// <summary>
/// 是否提供排序功能
/// </summary>
[
Category("关键"),
Description("是否提供排序功能")
]
public bool IsSort
{
get{return _isSort;}
set{_isSort = value;}
}
/// <summary>
/// 可否编辑行
/// </summary>
[
Category("关键"),
Description("可否编辑行")
]
public bool IsRowEdit
{
get{return _isRowEdit;}
set{_isRowEdit = value;}
}
/// <summary>
///要绑定室控件的数据集,可以在进行修改,
/// 但是请与以上各属性对应
/// </summary>
[
Browsable(false)
]
public DataSet DbSet
{
get
{
if(ViewState["lrcDs"] != null)
{
DataSet _dbSet = new DataSet();
System.IO.StringReader sr = new System.IO.StringReader((string)ViewState["lrcDs"]);
_dbSet.ReadXml(sr);
return _dbSet;
}
else
{
return null;
}
}
set
{
if(value != null)
{
System.IO.StringWriter sw = new System.IO.StringWriter();
value.WriteXml(sw);
ViewState["lrcDs"] = sw.ToString();
}
else
{
ViewState["lrcDs"] = null;
}
}
}
/// <summary>
/// 排序字段名
/// 不可在设计时设置
/// </summary>
[
Browsable(false)
]
public string SortField
{
get
{
string s = (string)ViewState["lrcSortField"];
return ((s == null)?String.Empty : s);
}
set
{
ViewState["lrcSortField"] = value;
}
}
/// <summary>
/// 排序类型
/// 不可在设计时设置
/// </summary>
[
Browsable(false)
]
public string SortType
{
get
{
string s = (string)ViewState["lrcSortType"];
return (( s == null)?String.Empty : s);
}
set
{
ViewState["lrcSortType"] = value;
}
}
/// <summary>
/// 数据库连接字符串,默认从 web.config中读取
/// </summary>
[
Category("关键"),
Description("数据库连接字符串")
]
public string Conn
{
get
{
if(_conn == null || _conn == "")
{
return System.Configuration.ConfigurationSettings.AppSettings["Conn"];
}
else
{
return _conn;
}
}
set{ _conn = value;}
}
/// <summary>
/// 列名数组
/// </summary>
[
Browsable(false)
]
public string[] cols
{
get{return _colsStr.Split(chra);}
}
/// <summary>
/// 显示列名数组
/// </summary>
[
Browsable(false)
]
private string[] colsA
{
get{return _colsStrCN.Split(chra);}
}
/// <summary>
/// 主键列名数组
/// </summary>
[
Browsable(false)
]
public string[] _priKeyAr
{
get{return _priKey.Split(chra);}
}
/// <summary>
/// 主键列索引数组
/// </summary>
[
Browsable(false)
]
public string[] PriKeyIndex
{
get
{
string[] index = new string[_priKeyAr.Length];
for(int i=0;i<_priKeyAr.Length;i++)
{
for(int ii=0;ii<cols.Length;ii++)
{
if(cols[ii] == _priKeyAr[i])
index[i] = ii.ToString();
}
}
return index;
}
}
/// <summary>
/// 编辑列名数组
/// </summary>
[
Browsable(false)
]
public string[] _editColAr
{
get{return _editCol.Split(chra);}
}
/// <summary>
/// 编辑列索引数组
/// </summary>
[
Browsable(false)
]
public string[] EditColIndex
{
get
{
string[] index = new string[_editColAr.Length];
if(_editColAr.Length == 1 && _editColAr[0] == "1")
{
index[0] = "LrcAllEdit";
}
else if(_editColAr.Length == 1 && _editColAr[0] == "0")
{
index[0] = "LrcNoEdit";
}
else
{
for(int i=0;i<_editColAr.Length;i++)
{
for(int ii=0;ii<cols.Length;ii++)
{
if(cols[ii] == _editColAr[i])
index[i] = ii.ToString();
}
}
}
return index;
}
}
/// <summary>
/// 外键列二维数组
/// </summary>
[
Browsable(false)
]
public string[,] FkColArray
{
get
{
if(_fkCol == "")
{
return null;
}
else
{
string[] a = _fkCol.Split(chra);
int num = a.Length;
string[,] fkA = new string[num,5];
for(int i=0;i<num;i++)
{
string[] b = a[i].Split(chrb);
string fkIndex = "";
for(int ii=0;ii<cols.Length;ii++)
{
if(cols[ii] == b[0])
{
fkIndex = ii.ToString();
fkA[i,0] = fkIndex;
}
}
for(int j=0;j<4;j++)
{
fkA[i,j+1] = b[j];
}
}
return fkA;
}
}
}