使用 C# 创建动态 ASP.NET 控件

分享于 

7分钟阅读

Web开发

  繁體

屏幕截图- dynamic_creation.jpg

介绍

本文将介绍如何动态创建 ASP.NET 服务器控件并将控件放置在一个 HTML table 中,这也是根据你的需要动态创建的。

使用代码

步骤 1

创建新的网页项目并创建新的ASPX页。 然后在窗口中创建一个 HTML table 并将它的NAME" myNewTable"。

重要: 不要忘记让 table 成为服务器控件并设置 可见= false ,因为我们要用控件动态显示 table 和行和列。

步骤 2

在后面的代码中,我有一个方法 LoadControls(),它返回一个 DataTable。 我在这里使用了层概念,并使用Oracle作为后台。 可以不使用层概念,而可以使用 SQL Server 而不是 Oracle。 为应用程序创建必要的数据库连接,并确保已经为该示例创建了 table。 我的示例 table 结构如下:

CREATETABLE TBL_FIELD_CREATION 
( 
 FIELD_ID NUMBER(15,0) NOTNULL, 
 FIELD_NAME VARCHAR2(100) NULL,//Name for the Control 
 FIELD_LABEL VARCHAR2(100) NOTNULL,//To Display the Name 
 FIELD_TYPE VARCHAR2(100) NOTNULL,//Typeof the Control like TextBox,DropDown... 
 STATUS CHAR(1) NOTNULL,//Active or Inactive to Show the control at runtime. 
 PRIMARYKEY(FIELD_ID) 
)

为文本框和下拉列表框插入一些值到 table 中。 然后通过编写一个 inline SQL查询或者存储过程,根据你的需要从 table 中选择值:

//// Method 1//========//This load control method is a method will return the datatable.public DataTable LoadControls()
{
 try {
 objDt.Clear();
 objDt= objMyDl.GetDtValues("T", 0);
 // Replace your Query or Method which// you have written to return the values. }
 catch (CustomException ObjExpCust)
 {
 MsgBox(ObjExpCust.CustomErrorMessage);
 }
 catch (Exception)
 {
 MsgBox("Critical error occured. Unable to process.");
 }
 return objTrBillandCost;
}
步骤 3

HtmlTableRowHtmlTableCell 创建对象。 对 HtmlTableRow 中的不同列或者单元格使用不同的HtmlTableCell 对象。 你现在可以为 table。行和单元格指定 StyleColorWidthHeight 属性。

////Expand code snippet//Method 2//=========//override protected void OnInit(EventArgs e){
 DataTable objDt = LoadControls();
 int row,numrows,numcells,k,l;
 row=0;
 numcells = 4;
 if (objDt.Rows.Count >0)
 {
 myNewTable.Border = 0;
 myNewTable.Align = "center";
 numrows = objDt.Rows.Count;
 for (k = 1; k <= numrows; k++)
 {
 HtmlTableRow objRow = new HtmlTableRow();
 row = row + 1;
 for (l = 1; l <= numcells; l++)
 {
 if (l == 1)
 {
 HtmlTableCell objCell1 = new HtmlTableCell();
 objCell1.Align = "right";
 objCell1.RowSpan = 1;
 objCell1.ColSpan = 1;
 objCell1.Width = "100";
 objCell1.Height = "20";
 Label lbl = new Label();
 lbl.ID = "Label" + k.ToString();
 lbl.CssClass = "LabelLeftSide";
 lbl.Text = objDt.Rows[k - 1]["FIELD_LABEL"].ToString().Trim()+" :" ;
 objCell1.Controls.Add(lbl);
 objRow.Cells.Add(objCell1);
 }
 if (l == 2)
 {
 HtmlTableCell objCell2 = new HtmlTableCell();
 objCell2.Align = "left";
 objCell2.RowSpan = 1;
 objCell2.ColSpan = 1;
 objCell2.Width = "15";
 objCell2.Height = "20";
 objRow.Cells.Add(objCell2);
 }
 if (l == 3)
 {
 HtmlTableCell objCell3 = new HtmlTableCell();
 objCell3.RowSpan = 1;
 objCell3.ColSpan = 1;
 objCell3.Width = "165";
 objCell3.Height = "20";
 string strControlType = 
 objDt.Rows[k - 1]["FIELD_TYPE"].ToString().Trim();
 if (strControlType == "D")
 {
 DropDownList ddltype = new DropDownList();
 ddltype.ID = "DropDownList" + k.ToString();
 ddltype.Style["Width"] = "165px";
 if (ddltype.ID == "DropDownList1")
 {
 ddltype.Items.Add(new ListItem("--Select one--", "-1"));
 ddltype.Items.Add("One");
 ddltype.Items.Add("Two");
 ddltype.Items.Add("Three");
 }
 elseif (ddltype.ID == "DropDownList2")
 {
 ddltype.Items.Add(new ListItem("--Select one--", "-1"));
 ddltype.Items.Add("Center");
 ddltype.Items.Add("Division");
 ddltype.Items.Add("Group");
 }
 else {
 ddltype.Items.Add(new ListItem("--Select one--", "-1"));
 ddltype.Items.Add("Redr");
 ddltype.Items.Add("Blue");
 ddltype.Items.Add("Green");
 }
 objCell3.Controls.Add(ddltype);
 objRow.Cells.Add(objCell3);
 }
 if (strControlType == "T")
 {
 TextBox txt = new TextBox();
 txt.ID = "TextBox" + k.ToString();
 txt.Style["Width"] = "165px";
 txt.Text = "TextBox" + k.ToString();
 txt.PreRender += new System.EventHandler(this.txt_PreRender);
 objCell3.Controls.Add(txt);
 objRow.Cells.Add(objCell3);
 }
 }
 if (l == 4)
 {
 HtmlTableCell objCell4 = new HtmlTableCell();
 objCell4.Align = "left";
 objCell4.RowSpan = 1;
 objCell4.ColSpan = 1;
 objCell4.Width = "10";
 objCell4.Height = "20";
 objRow.Cells.Add(objCell4);
 }
 myNewTable.Rows.Add(objRow);
 myNewTable.Visible = true;
 }
 }
 }
 base.OnInit(e);
 }
 //////Reset the dropdown to default selected value.protectedvoid btnReset_Click(object sender, ImageClickEventArgs e)
 {
 DropDownList ddl = new DropDownList();
 ddl = (DropDownList)this.Master.FindControl("Content").FindControl(
 "myNewTable").FindControl("DropDownList1");
 ddl.SelectedValue = "-1";
 ddl = (DropDownList)this.Master.FindControl("Content").FindControl(
 "myNewTable").FindControl("DropDownList2");
 ddl.SelectedValue = "-1";
 ddl = (DropDownList)this.Master.FindControl("Content").FindControl(
 "myNewTable").FindControl("DropDownList5");
 ddl.SelectedValue = "-1";
 }

那就是 !


相关文章