2016-08-02 5 views
0

Ich habe ein Problem, bei dem mein Button-Steuerelement, das dynamisch generiert wird, nur in der letzten Zeile angezeigt wird. Ich habe in diesem Beitrag seheDynamic Button-Steuerelement erscheint nur in der letzten Zeile

Asp.net Linkbutton loop

aber es deutet auf eine Listview verwendet, die ich nicht glaube, ich in diesem Fall verwenden kann. Ich erzeuge eine HTML-Tabelle mit einem Panel-Steuerelement und SQL-Daten und es wird meiner Meinung nach sehr spezifisch. Hier ist mein Code hinter:

//declare a dynamic button 
    Button btn_continue = new Button(); 
    btn_continue.Click += Btn_continue_Click; 
    btn_continue.CssClass = "controlButtons"; 
    btn_continue.Font.Size = 20; 
    btn_continue.Text = "Continue this job"; 

    //formatting for the rows 
    int oddNumber = 1; 

    foreach (DataRow row in dtGetIncompleteJobs.Rows) 
    { 
     //grab the date and make it shorter 
     DateTime date = Convert.ToDateTime(row[3].ToString()); 

     pnl_jobList.Controls.Add(new LiteralControl("<tr>")); 
     if (centralFunctions.OddNumberCheck(oddNumber) == true) 
     { 
      pnl_jobList.Controls.Add(new LiteralControl("<td class='col-1 col-1-m lightRow'>" + row[5].ToString() + "</td>")); 
      pnl_jobList.Controls.Add(new LiteralControl("<td class='col-2 col-2-m lightRow'>" + date.ToShortDateString() + "</td>")); 
      pnl_jobList.Controls.Add(new LiteralControl("<td class='col-2 col-2-m lightRow'>" + row[0].ToString() + "</td>")); 
      pnl_jobList.Controls.Add(new LiteralControl("<td class='col-2 col-2-m lightRow'>" + row[1].ToString() + "</td>")); 
      pnl_jobList.Controls.Add(new LiteralControl("<td class='col-2 col-2-m lightRow'>" + row[2].ToString() + "</td>")); 
      pnl_jobList.Controls.Add(new LiteralControl("<td class='col-1 col-1-m lightRow'>" + row[4].ToString() + "</td>")); 
      pnl_jobList.Controls.Add(new LiteralControl("<td class='col-2 col-2-m'>")); 
      btn_continue.ID = row[5].ToString(); 
      pnl_jobList.Controls.Add(btn_continue); 
      pnl_jobList.Controls.Add(new LiteralControl("</td>")); 
      oddNumber++; 
     } 
     else 
     { 
      pnl_jobList.Controls.Add(new LiteralControl("<td class='col-1 col-1-m darkRow'>" + row[5].ToString() + "</td>")); 
      pnl_jobList.Controls.Add(new LiteralControl("<td class='col-2 col-2-m darkRow'>" + row[3].ToString() + "</td>")); 
      pnl_jobList.Controls.Add(new LiteralControl("<td class='col-2 col-2-m darkRow'>" + row[0].ToString() + "</td>")); 
      pnl_jobList.Controls.Add(new LiteralControl("<td class='col-2 col-2-m darkRow'>" + row[2].ToString() + "</td>")); 
      pnl_jobList.Controls.Add(new LiteralControl("<td class='col-2 col-2-m darkRow'>" + row[2].ToString() + "</td>")); 
      pnl_jobList.Controls.Add(new LiteralControl("<td class='col-1 col-1-m darkRow'>" + row[4].ToString() + "</td>")); 
      pnl_jobList.Controls.Add(new LiteralControl("<td class='col-2 col-2-m'>")); 
      btn_continue.ID = row[5].ToString(); 
      pnl_jobList.Controls.Add(btn_continue); 
      pnl_jobList.Controls.Add(new LiteralControl("</td>")); 
      oddNumber++; 

     } 

     pnl_jobList.Controls.Add(new LiteralControl("</tr>")); 
    } 

Und hier ist, wie es aussieht: html output

Ist es möglich, das Steuerelement Button auf jeder Zeile die Art, wie ich tue, es zu bekommen? Ich habe das Gefühl, ich vermisse etwas Einfaches oder gehe den falschen Weg. Lassen Sie mich wissen, wenn ich irgendwelche Details ausgelassen habe. Danke für die Hilfe.

+1

Haben Sie versucht, eine neue Schaltfläche für jede Zeile zu schaffen. – Scrobi

Antwort

0

Sieht aus wie Sie Ihre Kreation Code bewegen für die btn_continue zu withn der foreach-Schleife müssen

//formatting for the rows 
int oddNumber = 1; 

//declate the button 
Button btn_continue 
foreach (DataRow row in dtGetIncompleteJobs.Rows) 
{ 
    //grab the date and make it shorter 
    DateTime date = Convert.ToDateTime(row[3].ToString()); 

    //create the button 
    btn_continue = new Button(); 
    btn_continue.Click += Btn_continue_Click; 
    btn_continue.CssClass = "controlButtons"; 
    btn_continue.Font.Size = 20; 
    btn_continue.Text = "Continue this job"; 

    pnl_jobList.Controls.Add(new LiteralControl("<tr>")); 
    if (centralFunctions.OddNumberCheck(oddNumber) == true) 
    { 
     pnl_jobList.Controls.Add(new LiteralControl("<td class='col-1 col-1-m lightRow'>" + row[5].ToString() + "</td>")); 
     pnl_jobList.Controls.Add(new LiteralControl("<td class='col-2 col-2-m lightRow'>" + date.ToShortDateString() + "</td>")); 
     pnl_jobList.Controls.Add(new LiteralControl("<td class='col-2 col-2-m lightRow'>" + row[0].ToString() + "</td>")); 
     pnl_jobList.Controls.Add(new LiteralControl("<td class='col-2 col-2-m lightRow'>" + row[1].ToString() + "</td>")); 
     pnl_jobList.Controls.Add(new LiteralControl("<td class='col-2 col-2-m lightRow'>" + row[2].ToString() + "</td>")); 
     pnl_jobList.Controls.Add(new LiteralControl("<td class='col-1 col-1-m lightRow'>" + row[4].ToString() + "</td>")); 
     pnl_jobList.Controls.Add(new LiteralControl("<td class='col-2 col-2-m'>")); 
     btn_continue.ID = row[5].ToString(); 
     pnl_jobList.Controls.Add(btn_continue); 
     pnl_jobList.Controls.Add(new LiteralControl("</td>")); 
     oddNumber++; 
    } 
    else 
    { 
     pnl_jobList.Controls.Add(new LiteralControl("<td class='col-1 col-1-m darkRow'>" + row[5].ToString() + "</td>")); 
     pnl_jobList.Controls.Add(new LiteralControl("<td class='col-2 col-2-m darkRow'>" + row[3].ToString() + "</td>")); 
     pnl_jobList.Controls.Add(new LiteralControl("<td class='col-2 col-2-m darkRow'>" + row[0].ToString() + "</td>")); 
     pnl_jobList.Controls.Add(new LiteralControl("<td class='col-2 col-2-m darkRow'>" + row[2].ToString() + "</td>")); 
     pnl_jobList.Controls.Add(new LiteralControl("<td class='col-2 col-2-m darkRow'>" + row[2].ToString() + "</td>")); 
     pnl_jobList.Controls.Add(new LiteralControl("<td class='col-1 col-1-m darkRow'>" + row[4].ToString() + "</td>")); 
     pnl_jobList.Controls.Add(new LiteralControl("<td class='col-2 col-2-m'>")); 
     btn_continue.ID = row[5].ToString(); 
     pnl_jobList.Controls.Add(btn_continue); 
     pnl_jobList.Controls.Add(new LiteralControl("</td>")); 
     oddNumber++; 

    } 

    pnl_jobList.Controls.Add(new LiteralControl("</tr>")); 
} 
+1

Wow, ich wusste, es war etwas Einfaches. Nicht sicher, warum es nicht funktioniert hat, als ich es vorher versucht habe ... Auf jeden Fall funktioniert es jetzt. Vielen Dank!! – ryol

+0

@ryol - In Ihrem ursprünglichen Code haben Sie nur eine Schaltfläche erstellt. Es könnte also nur einmal in der Form erscheinen, in der letzten Position, die du ihm gegeben hast. – ConnorsFan

Verwandte Themen