你好
我想以屏幕截图中显示的格式显示数据。显示的所有数据都是从Sql Server-2005数据库中检索的。这种数据表示的最佳选择是哪种?我在论坛上看过,从他们那里我无法得到一个清晰的视角。有人建议listview其他嵌套数据网格,一些转发器控制。能否请你建议哪一个是正确而准确的前进方法?还有一些原因(如果可能!!)。我正在使用visual studio 2008,.net Framework 3.5,带有c#的asp.net,我在我的项目中没有使用LINQ,它是一个Web应用程序。同样的图片也可以在http://postimage.org/image/2xj9bdles/
找到感谢您的期待
答案 0 :(得分:1)
对不起,只是在黑暗中拍摄。你试过Telerik控件了吗?不幸的是,不是免费的......
答案 1 :(得分:1)
您绝对可以使用ListView和嵌套的Gridviews执行此操作。它没有什么棘手的。
我建议你从ListView开始,然后制作父行(即:灰色栏行。)从那里你可以添加你的嵌套GridViews。
答案 2 :(得分:1)
每当我遇到需要以复杂表格格式表示的数据时,我默认使用Repeater控件。我甚至开始将Repeater用于简单的表格。为何要中继?您可以完全(并且轻松地)控制输出。这允许一些非常复杂的安排,并且还允许用于简单网格的轻量级HTML。
答案 3 :(得分:1)
我认为你需要在盒子外面看一看。现在你只是在探索服务器控件。虽然方便,但它们缺乏以实用方式定制的能力。
您可以使用字符串生成器轻松地在您的代码中构建此表,该生成器具有无限制的控制和更少的代码。
以下是使用LINQ作为数据源的示例,但您可以为自己修改它。
StringBuilder sb = new StringBuilder();
sb.Append( "<table class='tableStripe'>");
sb.Append( "<tr><th width='1%'>Active</th><th>Image</th><th>Name</th><th>Short Description</th><th>Source</th><th width='1%'>Date Created</th><th width='1%'>Data Modified</th></tr>");
foreach (var result in join)
{
string chk = (result.Brand.Active ? "checked='checked'" : "");
sb.AppendFormat( @"<tr><td><input class='brandChk' value='{4}' type='checkbox' {0}>
</td><td width='1%'><img width='50px' src='{1}'</img></td>
<td><a href='/admin/Catalog/Brand/Detail.aspx?brandId={4}'>{2}
</a></td><td width='60%'>{3}</td>", chk, result.Brand.Image,
result.Brand.Name, result.c,result.Brand.BrandID);
sb.Append("<td>");
foreach (var q in result.Sources)
{
string srcname = (q.Source1=="Motovicity" ? "Motovicity":"Direct");
sb.AppendFormat("<img src='{0}' title='{1}'</img>", q.Image,srcname);
}
string date = string.Format("{0:MM/dd/yy}", result.Brand.DateCreated);
string mod = string.Format("{0:MM/dd/yy}", result.Brand.DateModified);
sb.Append("</td>");
sb.AppendFormat("<td>{0}</td><td>{1}</td></tr>", date, mod);
}
sb.Append("</table>");
resultSpan.InnerHtml = sb.ToString();
这个例子比你想要的要复杂得多,但它应该得到它的重点。