2

已解决:请参阅下面的解决方案!

使用带有 C# 代码的 aspx。

我在gridview的项目模板中的按钮中有以下代码:

Enabled='<%# IIF(Eval("wrqst_need_ind") == "Y","TRUE","FALSE") %>'

我收到以下错误:

The name 'IIF' does not exist in the current context

我究竟做错了什么?如果我使用“IF”而不是“IIF”,我会得到同样的错误

完整的item模板代码如下:

<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) %>'

然后每个按钮都被禁用。似乎每次它都返回错误......为什么?

已解决:请参阅下面的解决方案!

4

5 回答 5

7

在 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") %>'
于 2010-06-25T16:05:58.977 回答
2

这是有效的代码!

Enabled='<%# Eval("wrqst_need_ind").ToString().Equals("Y".ToString()) ? Convert.ToBoolean(1) : Convert.ToBoolean(0) %>'
于 2010-06-28T14:23:15.080 回答
1

我不确定你正在做的所有“Convert.ToBoolean(1)”的事情。如果您想要 true 和 false,只需编写 true 和 false(不带引号,否则将被视为字符串)。

例如。Enabled='<%#Eval("wrqst_need_ind") == "Y" ? true:false %>'

当然,当我键入时,我突然想到您不需要使用这种运算符。无论如何,条件都返回真或假,因此上述简化为:

Enabled='<%#Eval("wrqst_need_ind") == "Y" %>'
于 2010-06-28T14:23:44.673 回答
0

我很确定正确的键是小写的“if”。

于 2010-06-25T16:04:24.513 回答
0

万一它会帮助其他人......

这种风格对我不起作用

(Eval("status").ToString()).Equals("Done")

但这种风格确实有效:

(Eval("status").ToString()).Contains("Done")
于 2015-01-14T16:50:30.887 回答