根据数据源值动态启用asp按钮

时间:2010-06-25 16:02:08

标签: asp.net gridview dynamic button templatefield

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

使用带有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) %>'

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

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

5 个答案:

答案 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")