我有一个字符串,一个接一个地设置缩略图,没有换行符。一旦图像达到它们所在区域的最大宽度,图像就会回到下一行。我想在每个第4个缩略图之后插入一个换行符,并且我的代码几乎可以工作,但它会在第1个之后添加一个新行图像 - 这看起来不对。使用7个缩略图图像时,应该只添加一个换行符,这将在第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();
}
如何编辑上面的代码,以便在第一个缩略图后不再添加新行?
答案 0 :(得分:3)
您需要使用modulus operator进行检查。
if (i % 4 == 0)
这将允许您每隔四行插入一个新行。
但是这也会为第一个项目插入一个新行,因为i
将是0
而0 % 4
会返回0
。因此,请将支票修改为:
if(i != 0 && i % 4 == 0)
您当前的支票i == 4
将仅在前四行之后添加额外的行。