bir*_*dus 4 c# asp.net-mvc telerik telerik-grid
我正在尝试使用C#在我的MVC应用程序中的telerik网格中显示DateTime时应用一些逻辑,但是在使其工作时遇到一些麻烦.我的第一个问题是我不完全理解ClientTemplate调用是如何工作的.我也无法找到解释它是如何工作的文档.所以,解释它的工作方式会有所帮助,然后可能具体说明我的例子有什么问题:
columns.Bound(p => p.SetupDate).ClientTemplate("<#= SetupDate == DateTime.Min || SetupDate == null ? string.empty : SetupDate #>")
Run Code Online (Sandbox Code Playgroud)
更新:
我和丹尼尔的建议一起去了.我只是从ClientTemplate()调用此函数.这是最终的代码:
// Setup a minDate to mimic C#'s Date.MinDate constant.
var minDate = new Date();
minDate.setFullYear(1, 0, 1);
minDate.setHours(0, 0, 0, 0);
function checkDateWithFormat(d, f)
{
if (d.getTime() == minDate.getTime())
{
return "";
}
else
{
return d.toString(f);
}
}
Run Code Online (Sandbox Code Playgroud)
首先,您可能希望确保SetupDate单独工作.如果是,您可以尝试添加括号.
columns.Bound(p => p.SetupDate).ClientTemplate("<#= ((SetupDate == DateTime.Min) || (SetupDate == null)) ? string.Empty : SetupDate #>")
Run Code Online (Sandbox Code Playgroud)
或者您可以尝试使用if语句.
columns.Bound(p => p.SetupDate).ClientTemplate("<# if ((SetupDate != DateTime.Min) && (SetupDate != null)) { #><#= SetupDate #><# } #>")
Run Code Online (Sandbox Code Playgroud)
更新 NullReference的答案正确,它表示您不能在ClientTemplate中使用c#.所以你不能使用DateTime.Min或string.Empty.
实现同样目标的一种方法是使用javascript函数.像这样定义列:
columns.Bound(p => p.SetupDate).ClientTemplate("<#= checkDate(SetupDate) #>")
Run Code Online (Sandbox Code Playgroud)
然后添加javascript函数checkDate().(可能有更好的方法来查找最小值,但如果它是最小值,则getMilliseconds应该为0.)
<script>
function checkDate(setupDate) {
if ((setupDate.getMilliseconds() === 0) || (setupDate === null))
return '';
else
return setupDate;
}
</script>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11629 次 |
| 最近记录: |