已解决:请参阅下面的解决方案!
使用带有C#代码的aspx。
我在gridview的项目模板中的按钮中有以下代码:
Enabled='<%# IIF(Eval("wrqst_need_ind") == "Y","TRUE","FALSE") %>'
我收到以下错误:
The name 'IIF' does not exist in the current context
我做错了什么?如果我使用“IF”而不是“IIF”
,我会得到同样的错误完整项目模板代码如下:
<ItemTemplate>
<asp:Button ID="wrqst_need_ind_btn" runat="server" Text = "Create WR"
onClientClick="javascript:popUp('popup_createWR.aspx')"
Enabled='<%# IIF(Eval("wrqst_need_ind") == "Y","TRUE","FALSE") %>'
CommandArgument='<%# Eval("dvc_nm") + "|" + Eval("data_orgtn_yr") %>'/>
</ItemTemplate>
如果我把它排出去就可以了。
对我而言似乎应该有用......
编辑:我现在正在使用它:
Enabled='<%#Eval("wrqst_need_ind") == "Y" ? "TRUE" : "FALSE" %>'
并发现此错误:
服务器标签格式不正确。
非常感谢你的帮助!
更新
我试过了:
Enabled='<%# Eval("wrqst_need_ind") == "Y" ? Convert.ToBoolean(1) : Convert.ToBoolean(0) %>' and it ran!
但是,每个按钮都被禁用了。所以我试过了:
Enabled='<%# Eval("wrqst_need_ind") == "Y" ? Convert.ToBoolean(1) : Convert.ToBoolean(1) %>'
然后每个按钮都被禁用。似乎每次它都返回假...为什么?
已解决:请参阅下面的解决方案!
答案 0 :(得分:6)
在C#中,这种三元语法是:
Eval("wrqst_need_ind") == "Y" ? "TRUE" : "FALSE"
如果您正在使用VB.NET(看起来您不是),请使用If
函数。
If(Eval("wrqst_need_ind") == "Y", "TRUE", "FALSE")
编辑:事实证明==
这里不会比较字符串内容,而是字符串对象。因此,您必须使用.Equals("Y")
。因此,社区产生的最终答案是:
Enabled='<%# Eval("wrqst_need_ind").Equals("Y") %>'
答案 1 :(得分:2)
这是有效的代码!
Enabled='<%# Eval("wrqst_need_ind").ToString().Equals("Y".ToString()) ? Convert.ToBoolean(1) : Convert.ToBoolean(0) %>'
答案 2 :(得分:1)
我不确定你所做的所有“Convert.ToBoolean(1)”内容。如果你想要true和false,只需写入true和false(不带引号或将其视为字符串)。
例如。 Enabled='<%#Eval("wrqst_need_ind") == "Y" ? true:false %>'
当然,当我输入时,我发现你不需要 来使用这种运算符。无论如何,条件返回true或false,因此上面简化为:
Enabled='<%#Eval("wrqst_need_ind") == "Y" %>'
答案 3 :(得分:0)
我非常确定正确的关键字是“if”是否为小写。
答案 4 :(得分:0)
如果它会帮助其他人......
这种风格不对我有用:
(Eval("status").ToString()).Equals("Done")
但这种风格确实有效:
(Eval("status").ToString()).Contains("Done")