我正在使用 WebGrid 来显示项目列表,列表中的某些项目被禁用,所以我想让它在网格中变暗,为此我必须设置行如果禁用该项,则为灰色的类,我不知道如何根据条件设置行类
这是我的示例代码
var grid = new WebGrid(Model, canPage: true, rowsPerPage: 20);
@grid.GetHtml(tableStyle: "grid",
rowStyle: "gridrow",
alternatingRowStyle: "gridrow_alternate",
mode: WebGridPagerModes.All,
numericLinksCount: 10,
columns: grid.Columns(
grid.Column("Name", "Name", item => (item.LocationData[0].Name), canSort: true, style: "width:60%"),
grid.Column("Url", "Url", canSort: true, style: "width:60%"),
grid.Column("Edit", "", @<a href='../VenHome/Edit/@item.ID' ><img src='/content/icons/edit.png'
alt='Edit' />
</a>, style: "width:150px"),
grid.Column("Delete", "", @<a href='#' id='Delete' itemId='@item.ID' title='@item.LocationData[0].Name'><img
src='/content/icons/delete.png' alt='Delete' />
</a>, style: "width:150px"),
grid.Column("Details", "", @<a href="../VenHome/Details/@item.Id" title="Details">
<img src="../../Content/Icons/Details.png" alt="Details" /></a>)
));
}
答案 0 :(得分:8)
我使用JQuery找到了解决这个问题的方法,我为网格列内部HTML添加了一个CSS类属性 这是前面的代码,添加了属性
@{
var grid = new WebGrid(Model, canPage: true, rowsPerPage: 20);
@grid.GetHtml(tableStyle: "grid",
rowStyle: "gridrow",
alternatingRowStyle: "gridrow_alternate",
mode: WebGridPagerModes.All,
numericLinksCount: 10,
columns: grid.Columns(
grid.Column("Name", "Name", item => (item.LocationData[0].Name), canSort: true, style: "width:60%"),
grid.Column("Url", "Url", canSort: false, style: "width:60%"),
grid.Column("Edit", "", @<a href='../VenHome/Edit/@item.ID' ><img src='/content/icons/edit.png' alt='Edit' /></a>, style: "width:150px"),
grid.Column("Delete", "", @<a href='#' id='Delete' class="temp" removed="@item.Removed" itemId='@item.ID' title='@item.LocationData[0].Name'><img src='/content/icons/delete.png' alt='Delete' /></a>, style: "width:150px"),
grid.Column("Details", "", @<a href="../VenHome/Details/@item.Id" title="Details">
<img src="../../Content/Icons/Details.png" alt="Details" /></a>)
));
}
这是修改后的代码
grid.Column("Delete", "", @<a href='#' id='Delete' class="temp" removed="@item.Removed" itemId='@item.ID' title='@item.LocationData[0].Name'><img src='/content/icons/delete.png' alt='Delete' /></a>, style: "width:150px"),
我在删除链接中添加了一个类“temp”,并且还添加了一个属性“removed”具有条件值,并且我添加了以下JQuery代码
$(".temp").each(function (index, element) {
if (($(element).attr("removed")) == "False") {
$(element).parent().parent().attr("class", "deleted");
$(element).find("img").attr("src", "../../content/icons/deleted.png");
}
});
注意:如果该项目已删除,则会将该行显示为灰色
答案 1 :(得分:1)
我正在禁用在WebGrid中定义为列的链接,这也适用于您。我将颜色设置为灰色并且onclick在禁用条件时返回false。否则颜色为黑色,onclick返回true,如下所示:
@{
bool enableLink = false;
var link = "false";
var color = "grey";
if (enableLink) { link="true"; color="black"; }
}
<div>@grid.GetHtml( tableStyle: "grid",
headerStyle: "head",
alternatingRowStyle: "alt",
columns: grid.Columns(
grid.Column(format: @<a href="http://www.whereverYouLinkTo.com" style="color:@color" onclick="return @link">Edit</a>),
grid.Column("FirstName", header:"First"),
grid.Column("LastName", header:"Last")))
</div>
我希望这有帮助!