Avatar billede webdesigner Praktikant
30. maj 2010 - 11:32 Der er 3 kommentarer og
1 løsning

C#.Net dynamiske knapper og paneler i C#

hej er ved at lave en siden med fler dynamiske knap indput ..
men kan ikke hente værdier fra de specifikke
Textboxe det er sammen hold med en edit knap.
hvordan får jeg fat på textboxn.

Panel newpanel;
TextBox textbox;
Button btnEdit;
Button btnDel;
DropDownList dropList;
Literal literal;
int Counter = 0;

foreach (DataRow forum in dt.Rows)
{
                    newpanel = new Panel();
                    newpanel.ID = "pnl_" + Counter;
                    pnlBoards.Controls.Add(newpanel);
                    literal = new Literal();
                    literal.ID = "Lit_" + Counter;
                    newpanel.Controls.Add(literal);
                    literal.Text = "<div class=\"Boards\">\n" +
                                      "<table class=\"tableHead\"><tr><td>" + forum["fldForumName"] +
                                      "</td></tr>\n<tr><td></td></tr></table>" +
                                      "<div class=\"Indicator\" style=\"background-color:pink; \"></div>\n" +
                                      "<div class=\"Boardsettings\">";
                    textbox = new TextBox();
                    textbox.ID = "txt_" + forum["fldID"].ToString();
                    newpanel.Controls.Add(textbox);
                    textbox.Text = forum["fldForumName"].ToString();

                    btnEdit = new Button();
                    btnEdit.ID = "btnEdit_" + Counter;
                    btnEdit.Text = "EDIT";
                    btnEdit.CssClass = "Button";
                    btnEdit.CommandArgument = forum["fldID"].ToString();
                    //btnEdit.Attributes.Add("rel", forum["fldID"].ToString());
                    btnEdit.Click += new System.EventHandler(btn_Click);
                    newpanel.Controls.Add(btnEdit);

                    btnDel = new Button();
                    btnDel.ID = "btnDel_" + Counter;
                    btnDel.Text = "DEL";
                    newpanel.Controls.Add(btnDel);

                    dropList = new DropDownList();
                    dropList.ID = "ddl_" + Counter;

                    newpanel.Controls.Add(dropList);
                    literal = new Literal();
                    newpanel.Controls.Add(literal);
                    literal.ID = "litS_" + Counter;
                    literal.Text = "</div>\n" +
                                                "</div>\n";

                    Counter++;
}

private void btn_Click(object sender, EventArgs e)
{
ContentPlaceHolder page = Page.Master.FindControl("Content") as ContentPlaceHolder;
        Button clickedButton = (Button)sender;

        lblTest.Text += clickedButton.CommandArgument;
}
Avatar billede pnr Nybegynder
30. maj 2010 - 12:16 #1
hvis du bruger en repeater vil du have lidt mere styr på dine kontroller, og du vil rimlig nemt kunne itererer hele dit kontroltræ.
Avatar billede webdesigner Praktikant
30. maj 2010 - 13:11 #2
hej pnr.
Snakke lige med min lære og hand kalder det spagetti kode at blande front end og back end, no offence :D

men ser ud som og jeg kunne lave, det med vil gerne have denne metode til at virke btw. jeg opretter funktioner til knapperne så der er ikke så lang en kode...
Avatar billede pnr Nybegynder
30. maj 2010 - 13:43 #3
En Repeater er en "front-end" komponent som i den grad er designet til det du vil opnå. Det er jo netop det der gør at man i asp.net kan få mindre "spaghetti kode", du kan holde din markup i aspx filen og din kode i cs filen. I dit ovenstående eksempel har du blandet din markup med din regulere kode.

Giver det mening?
Avatar billede webdesigner Praktikant
13. februar 2013 - 12:59 #4
Brugte en funktion til det blev pænere af det Lukker her med..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester