webForumDet fria alternativet

Lägga till kontroller till webform

.NET

1 svar · 276 visningar · startad av SnowJim

Medlem sedan sep. 200420 inlägg
Frågan#1

Tja!

Jag lägger till kontroller i min Page_Load på följande vis

    Kod:
private void Page_Load(object sender, System.EventArgs e)
        {
            try
            {
                if(IsPostBack)
                {

                }
                else
                {

                }
                dbhandler = new DBHandler(new DBHandler.errorPass(catchError),Server.MapPath("PrgramBaseDB.mdb"));
                //MainMenuHandler1.MainMenus = dbhandler.getMainMenu();

                //Create Page
                HtmlForm MainForm = new HtmlForm();
                #region MainForm Settings
                MainForm.Attributes.Add("method","post");
                MainForm.Attributes.Add("runat","server");
                #endregion

                HtmlTable MainTable = new HtmlTable();
                #region MainTable Settings
                MainTable.ID = "MainTable";
                MainTable.Height = "768px";
                MainTable.Width = "800px";
                MainTable.CellPadding = 0;
                MainTable.CellSpacing = 0;
                MainTable.Align = "center";
                MainTable.Border = 2;
                #endregion

                HtmlTableRow MainTableRow;
                HtmlTableCell MainTableCell;

                #region ROW 1 (TITLE)
                MainTableRow = new HtmlTableRow();
                #region 1 Row(TITLE) Settings
                MainTableRow.Height = "150";
                #endregion

                MainTableCell = new HtmlTableCell();
                #region 1 Cell(TITLE Settings
                MainTableCell.ColSpan = 3;
                #endregion

                MainTableRow.Cells.Add(MainTableCell);
                MainTable.Rows.Add(MainTableRow);
                #endregion

                #region ROW 2(MAINMENU,MAIN,NEWS)
                MainTableRow = new HtmlTableRow();
                
                MainTableCell = new HtmlTableCell();
                #region Cell 1 Settings(MainMenu)
                MainTableCell.VAlign = "top";
                MainTableCell.Width = "148";
                #endregion

                //ADD MENU
                MainMenuHandler mmHandler = new MainMenuHandler();
                #region MainMenuHandler Settings
                mmHandler.Attributes.Add("runat","server");
                mmHandler.ID = "MainMenu";
                mmHandler.MainMenus = dbhandler.getMainMenu();
                #endregion

                //MainTableCell = new HtmlTableCell();
                //MainTableCell.Controls.Add(mmHandler);
                //MainTableRow.Cells.Add(MainTableCell);

                //Add Cell 2 MAIN
                MainTableCell = new HtmlTableCell();
                MainTableRow.Cells.Add(MainTableCell);
                //Add Cell 3 NEWS
                MainTableCell = new HtmlTableCell();
                MainTableRow.Cells.Add(MainTableCell);

                MainTable.Rows.Add(MainTableRow);

                #endregion

                #region ROW 3(DONT KNOW)
                MainTableRow = new HtmlTableRow();
                #region ROW 3 Settings
                MainTableRow.Height = "50px";
                #endregion
                
                MainTableCell = new HtmlTableCell();
                #region Cell Foot Settings
                MainTableCell.ColSpan = 3;
                #endregion

                MainTableRow.Cells.Add(MainTableCell);

                MainTable.Rows.Add(MainTableRow);

                #endregion
                MainForm.Controls.Add(MainTable);

                this.Page.Controls.Add(MainForm);
            }
            catch(Exception ex)
            {
                catchError(this,"Error in " + this.ToString() + " in Page_Load : " + ex.Message);
            }
        }

Med andra ord lägger jag inte ut mina kontroller med drag and drop i VS.NET

HTML koden som blir av detta är följande

Kod:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
    <HEAD>
        <title>default</title>
        <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
        <meta content="C#" name="CODE_LANGUAGE">
        <meta content="JavaScript" name="vs_defaultClientScript">
        <meta content=" [url]http://schemas.microsoft.com/intellisense/ie5[/url]" name="vs_targetSchema">
        <LINK href="MainStyle.css" rel="stylesheet">
    </HEAD>
    <body>
        <P>&nbsp;</P>
    </body>
</HTML>
<;form name="_ctl0" method="post" action="default.aspx" id="_ctl0" runat="server">
<input type="hidden" name="__VIEWSTATE" value="dDwyMTQxMjc4NDIxOzs+GKYfw4uR3+NmiHNPyq4kFGj/WJI=" />
<table id="MainTable" height="768px" width="800px" cellpadding="0" cellspacing="0" align="center" border="2">
    <tr height="150">
        <td colspan="3"></td>
    </tr>
    <tr>
        <td></td>
        <td></td>
    </tr>
    <tr height="50px">
        <td colspan="3"></td>
    </tr>
</table>
</form>

Som ni ser så hamnar mina kontroller utan för /html taggen?

Lägger jag till kontroller på fel vis? eller vad gör jag för fel?

Medlem sedan jan. 200518 inlägg
#2

Ja det gör du. :)

För det första undrar jag varför du lägger till ett formulär i koden. Verkar onödig då det redan finns.

Använd det som finns istället och ändra denna rad till:

this.Page.Controls.Add(MainForm);
->
this.Page.Controls[1].Controls.Add(MainForm);

Då hamnar alla dina kontroller i formuläret istället.

263 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)