我正在将我的应用程序移动到MVC 3并尝试使用System.Web.Helpers.WebGrid。我想获得如下的HTML代码:
<table>
<tr style="background-color: <%= item.Color %>">
</tr>
<tr style="background-color: <%= item.Color %>">
</tr>
<tr style="background-color: <%= item.Color %>">
</tr>
</table>
有rowStyle
属性,允许为每一行定义css类,但每行都有不同的样式。它容易实现吗?
答案 0 :(得分:6)
所以我必须完成黑客攻击。首先,将颜色包含在另一列的一部分中。它必须以MvcHtmlString
返回以避免其他编码:
<%
var grid = new WebGrid(Model);
%>
<%=
grid.GetHtml(
tableStyle: "table_class",
columns: grid.Columns(
grid.Column("Importance", CTRes.Importance, (item) =>
new MvcHtmlString(Html.Encode(item.Importance) +
"<div class='color' style='display: none;'>#" + item.Color + "</div>"))
)
)
%>
然后我们在$(document).ready()
中设置bacground颜色:
<script type="text/javascript">
$(document).ready(
function () {
$('.table_class .color').each(function (index, element) { $(element).parent().parent().css('background-color', $(element).html()); });
}
);
</script>
答案 1 :(得分:2)
据我所知,WebGrid目前不支持除了指定CSS类之外的行样式。
如果您想使用WebGrid,那么我能想到的唯一选择是:
display:none
background-color
样式设置为隐藏列中文本颜色的样式这对我来说似乎是一个丑陋的黑客,所以我建议,如果你真的需要对表格显示进行那种程度的控制,那么就不要费心去WebGrid并自己渲染HTML。有很多关于实现自己的分页和排序的信息。
答案 2 :(得分:0)
你可以使用alternatingRowStyle:“(你的交替行的CSS类)”这样做,我相信。
像:
<div id="grid">
@grid.GetHtml(
tableStyle: "grid",
headerStyle: "head",
alternatingRowStyle: "alt",
columns: grid.Columns(
grid.Column("FirstName"),
grid.Column("LastName"),
grid.Column("Salary",format:@<text>$@item.Salary</text>)
)
)
</div>
这应该将css类“alt”应用于生成的网格中的交替行。
我从以下的例子中得到了例子:
答案 3 :(得分:0)
好的,我实施这个有点困难所以我想根据接受的答案展示我的所作所为。也许这会对你有帮助。
grid.Column("Status", "Status", (item) =>
new MvcHtmlString(Html.Encode(item.Status) +
"<div class='color' style='display: none;'>#" + item.RowColor + "</div>"))
我刚从我的Row对象中检索了颜色,如下所示:
public class MyRowType {
public String Status { get; set; }
public String RowColor
{
get{
switch (Status)
{
case "RUNNING":
return "0000FF";
case "FAILED":
return "FF0000";
default:
return "00FF00";
}
}
}
}
“状态”列之前存在,但现在整个行都根据“状态”字段中的值着色。
答案 4 :(得分:0)
grid.Column("ColumnName", canSort: true,
format: (item) =>
{
String Oabsent=string.Empty;
if (item.ColumnName)
{
Oabsent +=
"<span style=\"color:#FF0000 ; display:table\">"
+ item.ColumnName+ "</span><br/>";
}
else { Oabsent += item.ColumnName; }
return new HtmlString(Oabsent);
}),