2016-08-02 5 views
0

動的に生成されるButtonコントロールが最後の行にのみ表示されるという問題が発生しています。私はこのポスト最後の行にのみ表示される動的ボタンコントロール

Asp.net Linkbutton loop

を見てきましたが、それは私が、私はこのケースでは使うことができるとは思わないListViewコントロールを使用することを提案しています。 PanelコントロールとSQLデータを使用してHTMLテーブルを生成し、私の意見ではかなり具体的になりました。

//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>")); 
    } 

を、ここには次のようになります: ここに私のコードが背後にあるのです html output

それは私がそれをやっている途中各行のButtonコントロールを取得することはできますか?私は単純なものを見つけていないか、間違った道を歩いていると感じています。 詳細を残しておけば教えてください。助けてくれてありがとう。

+1

にbtn_continueのためのあなたの作成コードを移動する必要があるようにあなたは、各行に対して新しいボタンを作成しようとしたことがありルックス。 – Scrobi

答えて

0

を使用すると、foreachループwithn

//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

うわー、私はそれが何か単純だと分かっていました。私が前にそれを試したときになぜうまくいかなかったのか分かりません。ありがとう!! – ryol

+0

@ryol - 元のコードでは、ボタンを1つだけ作成しました。それはフォームに一度しか表示されません。フォームに最後に書いた位置に表示されます。 – ConnorsFan

関連する問題