2016-05-30 6 views
0

データベースのデータを表すプロジェクト用のテーブルを作成していますが、すべては問題ありませんが、最後の列にボタンが作成されず、理由がわかりません誰でも助けてくれますか?ボタンをc#からasp.netページに作成

私が使用していますasp.net 2010代わりにそれはASP.NET Tableコントロールを使用することの

public string getWhileLoopData() 
{ 
    string htmlStr = ""; 
    Dictionary<string, string> dic2 = (Dictionary<string, string>)Session["CurrentUser"]; 
    string ArmyName = dic2["UserName"].ToString(); 
    SqlConnection sqlConnection1 = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|Database.mdf;Integrated Security=True;User Instance=True;MultipleActiveResultSets=true"); 
    SqlCommand cmdd = new SqlCommand(); 
    cmdd.Parameters.AddWithValue("@zip", ArmyName); 
    cmdd.CommandType = CommandType.Text; 
    cmdd.Connection = sqlConnection1; 
    sqlConnection1.Open(); 
    cmdd.CommandText = "SELECT CityNum FROM [Users] where [email protected]"; 
    int citynum = Convert.ToInt32(cmdd.ExecuteScalar()); 

    SqlCommand cmd = new SqlCommand("SELECT CityRank, ArmyName, GuildName, Gold, Soliders FROM Users WHERE (CityNum = @num) ORDER BY CityRank", sqlConnection1); 
    cmd.Parameters.AddWithValue("@num", citynum); 
    cmd.Connection = sqlConnection1; 
    SqlDataReader reader = cmd.ExecuteReader(); 
    int count = 1; 
    while (reader.Read()) 
    { 
     int CityRank = reader.GetInt32(0); 
     string Name = reader.GetString(1); 
     string guild = reader.GetString(2); 
     int gold = reader.GetInt32(3); 
     int soliders = reader.GetInt32(4); 

     htmlStr += "<tr><td>" + CityRank + "</td><td>" + Name + "</td><td>" + guild + "</td><td>" + gold + "</td><td>" + soliders + "</td><td><asp:Button ID='" + Name + "' runat='server' Text='Attack' OnClick='AttClick_Clicks' /></td></tr>"; 
     count++; 
    } 
    sqlConnection1.Close(); 
    return htmlStr; 
} 
+0

をあなたの遺伝子にサーバーサイドコードを使用しています評価されたHTML。このページのライフサイクルに遅すぎるコードを挿入すると、asp.netエンジンによって解釈されず、生成時にクライアントに送信されます。ブラウザはこれらのサーバーサイドタグを理解することができません。 – MarcoLaser

+0

それから私は何をしますか? @MarcoLaser –

+0

WebFormsを使用していると仮定します。ページのinit-Eventを使用してhtml要素をページのコントロールコレクションに追加することができます。ポストバックの場合、生成されたボタンのクリックイベントは受信されないため、ロード前に行う必要があります。 – MarcoLaser

答えて

0

protected void Page_Load(object sender, EventArgs e) 
     { 
      Table table = this.GetTable(); 
      form1.Controls.Add(table); 
     } 

     private Table GetTable() 
     { 
      var table = new Table(); 

      var u1 = new User { CityRank = "1", Name = "Johannesburg", guild = "1", gold = "1", soliders = "1" }; 
      var u2 = new User { CityRank = "1", Name = "Cape Town", guild = "1", gold = "1", soliders = "2" }; 
      var u3 = new User { CityRank = "1", Name = "Kiev", guild = "1", gold = "1", soliders = "3" }; 

      var users = new List<User> { u1, u2, u3 }; 

      foreach (User u in users) 
      { 
       var row = new TableRow(); 
       row.Cells.Add(new TableCell() { Text = u.CityRank }); 
       row.Cells.Add(new TableCell() { Text = u.Name }); 
       row.Cells.Add(new TableCell() { Text = u.guild }); 
       row.Cells.Add(new TableCell() { Text = u.gold }); 
       row.Cells.Add(new TableCell() { Text = u.soliders }); 

       var button = new Button() 
       { 
        ID = u.Name, 
        Text = "Attack" 
       }; 

       button.Command += AttClick_Clicks; 
       button.CommandArgument = u.Name; 

       var buttonCell = new TableCell(); 
       buttonCell.Controls.Add(button); 

       row.Cells.Add(buttonCell); 

       table.Rows.Add(row); 
      } 

      return table; 
     } 

     protected void AttClick_Clicks(object sender, CommandEventArgs e) 
     { 
      string name = e.CommandArgument as String; 
      System.Diagnostics.Debugger.Break(); 
     } 
    } 

    public class User 
    { 
     public string CityRank { get; set; } 
     public string Name { get; set; } 
     public string guild { get; set; } 
     public string gold { get; set; } 
     public string soliders { get; set; } 
    } 

出力:

Dynamically create ASP.NET table with buttons

+0

を使用してください。ウェブサイトに追加しましたが、テーブルに追加する必要があります。どうすればいいですか? –

+0

これは私のコードです。あなたのすべてのデータをテーブルに加え、ボタンに加えてテーブルにページを追加します。あなたはボタンが表示されていないと答えました。私はあなたに解決策を教えました。 –

関連する問題