2017-11-30 26 views
0

現在、データベースから未知数の行を取得してテーブルに書き込んでいます。各テーブルセルには、データベースから一意のIDが与えられます。プログラムで作成されたidにcssを割り当てる

私はすなわち、それらに特定のCSS属性を適用するには、これらのIDにアクセスすることができる方法があります:これにまだ新しい、

reader.GetString("id").Attributes.CssStyle.Add("background-color", "#e1e1e1");

申し訳ありません - 例えば:

string sql = "select * from test"; 
MySqlConnection conn = new MySqlConnection(connString); 
MySqlCommand cmd = new MySqlCommand(sql, conn); 
conn.open 
MySqlDataReader reader = cmd.ExecuteReader(); 
while (reader.Read()) 
{ 
    q += "<tr><td id='" + reader.GetString("id") + "'>" + reader.GetString("name") + "</td></tr>\r\n"; 

    if (reader.GetString("name") == "test") 
    { 
    // This will not work - I need to reference the actual ID - how can I get this to work? 
    reader.GetString("id").Attributes.CssStyle.Add("background-color", "#e1e1e1"); 
    } 
} 
+0

A通常、より効率的な方法は、StringBuilderのを使っていますか?値はデータテーブルに返されますか?これはhtmlテーブルを使用していますか?あなたの現在の文脈では「読者」とは何ですか?これがSqlDataReaderの場合はいいですが、古いファッションの方法でテーブルを構築できます。ここにリンクがあります - https://stackoverflow.com/questions/13860490/show-data-in-asp-net-html-テーブルの参照これを行う方法について受け入れられた答えもあなたの動的 'htmlタグ'を構築するために文字列ビルダーを使用することができます – MethodMan

+0

はい、読者はSqlDataReaderであり、私は古いファッションの方法(例えば、私はページに送られる文字列を作成しています)。ポストバックでは、Attributes.CssStyle.Addを介して特定のものを強調表示するためにテーブルセルのIDを参照する必要があります。しかし、これらのIDはリアルタイムで構築されるため、コードはそれらについて認識しません。 – need2learn

+0

あなたがしていること/成し遂げたいことに関してコードが見えない場合は助けません..質問を更新して関連するコードを投稿してください..あなたが望むものを説明するために質問を編集するときにコードにコメントを追加してください何をしているのですか?最高のアドバイス私はあなたが現在何をしているのかを見ずに与えることができます – MethodMan

答えて

0

文字列qにHTMLを作成するため、qの中に色定義を追加する必要があります。それぞれの新しい追加は、あなたがこれまで持っていたすべてのテキスト+新しいテキストのコピーを作成し、繰り返しになるので、長い文字列を構築することは遅くなる傾向にあることを

while (reader.Read()) 
{ 
    var id = reader.GetString("id"); 
    var name = reader.GetString("name"); 
    // define style using the ? ... : ... operator 
    var style = name == "test" ? "background-color: #e1e1e1" : ""; 
    q += "<tr><td id='" + id + "' style='" + style + "'>" + name + "</td></tr>\r\n"; 
} 

注:最も簡単な方法は、このようなものです。あなたがデータグリッドでこれらを示している

var sb = new System.Text.StringBuilder(); 
while (reader.Read()) 
{ 
    var id = reader.GetString("id"); 
    var name = reader.GetString("name"); 
    var style = name == "test" ? "background-color: #e1e1e1" : ""; 
    sb.AppendLine("<tr><td id='" + id + "' style='" + style + "'>" + name + "</td></tr>"); 
} 
// use sb.ToString() for the result 
関連する問題