改行なしでサムネイルを次々に設定する文字列があります。画像は、画像が含まれる領域の最大幅に達すると、次の行に折り返されます。4つおきのサムネイルの後に改行を挿入したいのですが、コードはほぼ機能しますが、1つ目以降も新しい行が追加され続けます。画像-これは間違っているように見えます。サムネイル画像が7つある場合、改行は1つだけ追加する必要があり、それは4番目の画像の後になります。
SQLデータベースからのサムネイル情報を使用して文字列を呼び出して構築するために使用されるクラス情報は次のとおりです。
protected List<GlassItem> GetGlassItems(Guid CurrentPage)
{
var items = new List<GlassItem>();
using (MySqlConnection cn = new MySqlConnection(ConfigurationManager.ConnectionStrings["Sitefinity"].ToString()))
{
cn.Open();
MySqlCommand cmd = new MySqlCommand("SELECT id, BrandID, GlassName, Thumbnail, LargeImage, Ordinal, (SELECT Window_Brands.BrandName FROM Window_Brands WHERE Window_Brands.BrandPage = BrandID) AS BrandName FROM Window_Brand_cutglass WHERE BrandID = ?PageID AND Thumbnail IS NOT NULL AND LargeImage IS NOT NULL ORDER BY Ordinal", cn);
cmd.Parameters.Add(new MySqlParameter("PageID", CurrentPage.ToString()));
using (MySqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
if (reader["Thumbnail"].ToString().Length > 1 && reader["LargeImage"].ToString().Length > 1)
{
items.Add(new GlassItem
{
LargeImagePath = Revere.GetImagePath(reader["LargeImage"].ToString()),
ThumbnailPath = Revere.GetImagePath(reader["Thumbnail"].ToString()),
GlassName = reader["GlassName"].ToString()
});
}
}
}
cn.Close();
}
return items;
}
これは、GetGlassItemsクラスを利用するコードのビットです。これは、4番目のアイテムごとに新しい行が挿入されることを意味しますが、最初のアイテムの後に新しい行を追加する場所でもあります。
protected String BuildCutGlass(Guid CurrentPage)
{
var items = GetGlassItems(new Guid(CurrentPage.ToString()));
StringBuilder Glass = new StringBuilder();
for (int i = 0; i < items.Count; i++)
{
Glass.Append(String.Format("<div class='GlassItem'><a href='{0}' class='CutGlassPopup Icon'><img src='{1}' alt='{2}' width='77' height='77' /></a><a href='{0}' class='CutGlassPopup'>{2}</a></div>",
items[i].LargeImagePath,
items[i].ThumbnailPath,
items[i].GlassName));
Console.Write("count: " + items.Count.ToString() + "<br />");
if (i == 4)
{
// new line every 4 items
Glass.Append("<div style='clear: both;'></div>");
}
}
return Glass.ToString();
}
上記のコードを編集して、最初のサムネイルの後に新しい行が追加されないようにするにはどうすればよいですか?
モジュラス演算子によるチェックが必要です。
if (i % 4 == 0)
これにより、4行ごとに新しい行を挿入できます。
ただし、これにより、最初の項目にも新しい行が挿入されます。これi
は0
、0 % 4
を返すため0
です。したがって、小切手を次のように変更します。
if(i != 0 && i % 4 == 0)
現在のチェックでi == 4
は、最初の4行の後にのみ行が追加されます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加