protected void Page_Load(object sender, EventArgs e)
{
string tmpStr = Request.QueryString["pm"];
string[] strArray = tmpStr.Split('$');
string ssss = "";
div1.Controls.Clear();
for (int i = 0; i < strArray.Length;i++ )
{
string tableName = strArray[i].Trim();
ssss += tableName;
GridView gv = new GridView();
gv = CreateGridView(tableName);
gv.DataSource = NewMethod(tableName);
gv.DataBind();
div1.Controls.Add(gv);
//for (int j = 0; j < div1.Controls.Count; j++)
// {
//我这里是先把GridView加入div1中,之后才进行数据绑定
// ((GridView)div1.Controls[j]).DataSource = NewMethod(tableName);
// ((GridView)div1.Controls[j]).DataBind();
// }
}
// bindGV();
TB.Text = ssss;
}
public GridView CreateGridView(string tableName) {
GridView gv = new GridView();
gv.AutoGenerateColumns = false;
gv.EnableViewState = true;
gv.ID = "gridview";
gv.DataKeyNames = new string[] { "名称" };
BoundField bf = new BoundField();
bf = new BoundField();
bf.HeaderText = tableName;
bf.DataField = "名称";
gv.Columns.Add(bf);
TemplateField tfColumn = new TemplateField();
tfColumn.HeaderText = "";
tfColumn.ItemTemplate = new MyTemplate("", DataControlRowType.DataRow);
gv.Columns.Add(tfColumn);
CommandField cf = new CommandField();
cf.ShowSelectButton = true;
gv.Columns.Add(cf);
return gv;
}
//控制gridview行数
private DataTable NewMethod(string tableName)
{
DataTable dt = new DataTable();
dt.Columns.Add("名称", typeof(string));
SqlOperate so = new SqlOperate();
string sql = "select name from syscolumns where id in (select id from sysobjects where type = 'u' and name = '"+ tableName +"') ";
SqlDataReader myRead = so.ExecuteReader(sql);
//int count = 0;
while(myRead.Read()){
DataRow dr = dt.NewRow();
dr["名称"] = myRead[0].ToString();
dt.Rows.Add(dr);
}
return dt;
}
public class MyTemplate : ITemplate
{
private string strColumnName;
private DataControlRowType dcrtColumnType;
public MyTemplate()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
<summary>
/// 动态添加模版列
/// </summary>
/// <param name="strColumnName">列名</param>
/// <param name="dcrtColumnType">列的类型</param>
public MyTemplate(string strColumnName, DataControlRowType dcrtColumnType)
{
this.strColumnName = strColumnName;
this.dcrtColumnType = dcrtColumnType;
}
public void InstantiateIn(Control ctlContainer)
{
switch (dcrtColumnType)
{
case DataControlRowType.Header: //列标题
Literal ltr = new Literal();
ltr.Text = strColumnName;
ctlContainer.Controls.Add(ltr);
break;
case DataControlRowType.DataRow: //模版列内容——加载CheckBox
CheckBox cb = new CheckBox();
cb.ID = "CheckBox1";
cb.Checked = false;
ctlContainer.Controls.Add(cb);
break;
}
}
}