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

kra*_*626 2 asp.net gridview dynamic button templatefield

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

使用带有C#代码的aspx.

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

Enabled='<%# IIF(Eval("wrqst_need_ind") == "Y","TRUE","FALSE") %>'
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

The name 'IIF' does not exist in the current context
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?如果我使用"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>
Run Code Online (Sandbox Code Playgroud)

如果我把线路拿出来就可以了.

在我看来这应该工作......

编辑:我现在使用这个:

Enabled='<%#Eval("wrqst_need_ind") == "Y" ? "TRUE" : "FALSE" %>'
Run Code Online (Sandbox Code Playgroud)

并发现此错误:

服务器标签格式不正确.

非常感谢你的帮助!

更新:

我试过这个:

Enabled='<%# Eval("wrqst_need_ind") == "Y" ? Convert.ToBoolean(1) : Convert.ToBoolean(0) %>' and it ran!
Run Code Online (Sandbox Code Playgroud)

但是,每个按钮都被禁用.所以我尝试过:

Enabled='<%# Eval("wrqst_need_ind") == "Y" ? Convert.ToBoolean(1) : Convert.ToBoolean(1) %>'
Run Code Online (Sandbox Code Playgroud)

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

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

Che*_*hiz 7

在C#中,这种三元语法是:

Eval("wrqst_need_ind") == "Y" ? "TRUE" : "FALSE"
Run Code Online (Sandbox Code Playgroud)

如果您碰巧使用VB.NET(看起来您不是),请使用该If功能.

If(Eval("wrqst_need_ind") == "Y", "TRUE", "FALSE")
Run Code Online (Sandbox Code Playgroud)

编辑:事实证明,==这里不会比较字符串内容,而是字符串对象.所以,你必须使用.Equals("Y").因此,社区产生的最终答案是:

Enabled='<%# Eval("wrqst_need_ind").Equals("Y") %>'
Run Code Online (Sandbox Code Playgroud)