2011-12-03 28 views
0

私は本の情報がある書籍データベースを持っています。私はページに表示したい本の絵の名前を格納する行を持っています。たとえば、cprog.jpegイメージをにasp.netで動的に追加するC#

ここで、画像を表示するためにその名前をsrcに追加します。ただし、その名前自体を表示するだけです。私はそれをどうやって行うのかについてはあまりよく分かりませんここで

+ " <img src=\"{0} \">" + row[8].ToString() + "</div>" 

は完全なコード..です

foreach (DataTable table in dsgrid2.Tables) 
      { 
       foreach (DataRow row in table.Rows) 
       { 
        strBooksInCategory += 
          "<div style=\"height:150px;\">" 

          + " <img src=\"{0} \">" + row[8].ToString() + "</div>" 
         + " <div style=\"height:110px;float:left;padding-left:10px;\">" 
         + " <div style=\"height=auto;left-margin:10px;\">" + row[0] + "</div>" 
         + " <div style=\"height=auto;left-margin:10px;\">" + row[1] + "</div>" 
         + " <div style=\"height=auto;left-margin:10px;\">" + row[2] + "</div>" 
         + " <div style=\"height=auto;left-margin:10px;\">" + row[3] + "</div>" 
         + " <div style=\"height=auto;left-margin:10px;\">" + row[4] + "</div>" 
         + " <div style=\"height=auto;left-margin:10px;\">" + row[5] + "</div>" 
         + " </div>" 
         + "</div>"; 
        strBooksInCategory += "<div style=\"height:10px;width=100%;\"></div>"; 
+0

投稿されたコードには、あまり意味のあるASP.NETはありません。それは意図的なのでしょうか?それはPHPや何かのようなにおいがします。 – RickNZ

答えて

1

を私は、行を想定しています[8]あなたのですイメージ名は...

+ "<img src=\"/path/to/image/"+ row[8].ToString() +"\"></div>" 
0123のようになりますあなたはあまりにもイメージへのパスに配置する必要があります

+ "<img src=\""+ row[8].ToString() +"\"></div>" 

のようなものを、してみてください

他の回答者は正しいですが、これは非常に乱雑です&は後であなたの心を壊します。データバインドされたコントロールは、DataGridsとRepeaterで読むことができる方法です...それはあなたの価値があるでしょう!

+0

私はグリッドを持っていて、それを変更しただけです。これは学校プロジェクトであり、私たちのうち4人がそれに取り組んでいます。 –

+0

両方の方法で何も表示されませんでした –

+0

壊れた画像が表示されますか?もしそうなら:あなたは右クリック&表示しようとしている画像を見ることができますか? – Alan

1

あなたは恐ろしく間違っているいくつかのことをやっている:

  1. は今までそのような文字列を連結しないでください。代わりにStringBuilderクラスを使用してください。
  2. 文字列を連結してHTMLを構築しないでください。それは恐ろしく維持不能なコードを作り出します。私が責任を負うプロジェクトでそれを見たら、直ちにそれを修正するように言います。私が責任を負うプロジェクトでそれを見た場合、私はあなたの上司に直ちにそれを修正するよう伝えるように依頼します。
  3. Repeaterコントロールのようなデータバインドコントロールの使い方を学んでください!
  4. データベースは名前のみが含まれ、名前がURLの一部である場合、その後、あなたは完全なURLを形成する必要がある場合:

    String.Format("http://mysite.com/images/{0}.jpg", row[8]); 
    
+0

問題は、これは私たちの4人が取り組んでいる学校プロジェクトで、1人の男がすべてのことを変えてくれました。これが私の仕事です。私は個人的にそれをしませんでした。私はイメージを追加する責任があります。 –

+0

JohnがStringBuilderについて語ったことに加えて、ガーベッジの生成と収集を制御/軽減するのにも役立ちます。この[StringBuilderメソッド]リスト(http://www.gavpugh.com/2010/04/01/xnac-avoiding-garbage-when-working-with-stringbuilder/)(完全ではない)は、どのものがゴミを作成するかを示します。 –

+0

イメージの名前はURLの一部ではありません。私はさまざまな書籍のデータベースにいくつかのイメージ名を持っています。だから、私はまだこれを行う方法がわからない。 –

0

あなたのコードの中にそのようなHTMLを構築しないようにしてください。代わりに:

  1. すべてのマークアップをaspxファイルに移動し、コードの背後に移動します。
  2. 代わりに裸のhtmlのコントロール使用に切り替える:と<asp:Repeater><div>
  3. ラップコントロールの<img>タグの<asp:Image>を、そして<asp:Panel><ItemTemplate>
  4. 使用するデータへのあなたのDataTableから値を割り当てるためにバインドコントロールのプロパティ
関連する問題