【问题标题】:Datagrid Eval value check if 0Datagrid Eval值检查是否为0
【发布时间】:2017-11-02 17:17:54
【问题描述】:

我有一个带有 TemplateColumn 的 Datagrid 我有一个包含绑定数据的标签。我已经准备好有一个公共方法来检查其中的内容现在我想检查该行内的值是否为 0 如果它为 0 则使其为空。这是代码。

aspx

    <asp:datagrid id="dgData"  runat="server" Width="658px" CellPadding="2" PageSize="2" DataKeyField="ItemDataID"
                AutoGenerateColumns="False" ShowFooter="True" BorderColor="AliceBlue" OnItemDataBound="dgData_ItemDataBound">
<Columns>
<asp:TemplateColumn HeaderText="Term 1" ItemStyle-Wrap="True">
                        <ItemTemplate>
                            <asp:label BorderStyle=None Visible='<%# ReverseBool(Convert.ToBoolean(DataBinder.Eval(Container, "DataItem.IsCompleteOrNot"))) %>' runat="server" ID="edit_Score" Text='<%# DataBinder.Eval(Container, "DataItem.Score") %>'>
                            </asp:label>
                            <asp:label BorderStyle=None Text='<%# GetCompleteIncomplete(Convert.ToInt32(DataBinder.Eval(Container, "DataItem.Number"))) %>' Visible='<%# DataBinder.Eval(Container, "DataItem.IsCompleteOrNot") %>' id="txtIsComplete" runat="server">
                            </asp:label>
                        </ItemTemplate>
                    </asp:TemplateColumn>

c#GetCompleteIncomplete 方法

 protected string GetCompleteIncomplete(int iNumber)
    {

        if (iScore == 0)
        {
            return "Incomplete";
        }
        return "Complete";
    }

如何检查该数字的值是否为 0 提前致谢:)

【问题讨论】:

    标签: c# asp.net datagrid


    【解决方案1】:

    您可以使用三元运算符来设置内联可见性。

    <asp:Label ID="Label1" runat="server" 
       Visible='<%# Convert.ToInt32(DataBinder.Eval(Container, "DataItem.Number")) == 0 ? false : true %>' Text='<%# DataBinder.Eval(Container, "DataItem.Number") %>'></asp:Label>
    

    【讨论】:

    • 没听懂 你想让我做什么设置另一个具有 ID 的标签?除了删除其他方法之外,我还需要 DataItemScore 和 IsCompleteotNot 吗?当我尝试输入 == 0 时,它说 == not allowed in between string and int
    • id 只是这个 sn-p 的列名,你应该把它改成你自己的。但是您的问题表明,如果它是0,则该项目留空。这就是这样做的,当值为0 时隐藏标签。还是我们彼此不理解?
    • 对不起,我不明白所以你看到标签,它说 DataItem.Score 如果它来自数据库的值现在为 0,那么该行应该是一个空白,以将其设置为空白在它为 0 时,您说放入该行 == 0 ? false : true 当我这样做时,我得到一个错误,说 Operator '==' cannot be applied to 'object' 和 'int' 类型的操作数
    • 我已经更新了。也许在你的情况下你需要使用DataBinder.Eval,而不是Eval
    • 好的,你能告诉我我应该用这个替换以上 2 个标签中的哪一个吗?
    猜你喜欢
    • 2011-02-25
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-11
    • 1970-01-01
    • 2013-10-11
    • 2015-12-13
    相关资源
    最近更新 更多