在行if语句不在服务器控件中工作

时间:2014-05-01 16:09:26

标签: c# asp.net gridview inline servercontrols

我有一个gridview,它从其中一个列的数据库中提取日期:

<Columns>
   <asp:BoundField DataField="Person" HeaderText="Person" SortExpression="Person" />
   <asp:BoundField DataField="Effort" HeaderText="Effort" SortExpression="Effort" />
   <asp:BoundField DataField="Task" HeaderText="Task" SortExpression="Task" />
   <asp:BoundField DataField="Status" HeaderText="Status" SortExpression="Status" />
   <asp:BoundField DataField="OriginalEstimateHours" HeaderText="Estimated Hours" SortExpression="OriginalEstimateHours" />
   <asp:BoundField DataField="Total" HeaderText="Total" SortExpression="Total" />
   <asp:TemplateField HeaderText="Last Worked" ItemStyle-HorizontalAlign="Right" >
   <ItemTemplate>
       <asp:LinkButton ID="taskLinkButton" Text='<%# if (Eval("LastWorked").ToString().Length > 0) { Eval("LastWorked").ToString().Substring(0, 9)} %>' runat="server"  />
   </ItemTemplate>
       </asp:TemplateField>
</Columns>

这也拉回了时间,我想要的只是日期,所以我想添加一个子串。问题是行中返回的某些字段有一个日期,有些返回NULL。所以我想制作一个if条件,只有当长度为&gt;时才会产生子串。 0

但是,我收到的错误是“无效的表达式术语”,如果是'。

我做错了什么以及如何解决?

1 个答案:

答案 0 :(得分:4)

我建议将其更改为三元运算符:

<asp:LinkButton ID="taskLinkButton"
     Text='<%# (Eval("LastWorked").ToString().Length > 0) ? Eval("LastWorked").ToString().Substring(0, 9) : string.Empty %>'
     runat="server"  />

我猜测你的方法不起作用的原因是它实际上并没有返回任何东西。