【问题标题】:Checking whether Gridview contains specific Bind property or not检查 Gridview 是否包含特定的 Bind 属性
【发布时间】:2016-07-18 11:25:53
【问题描述】:

我一直在研究 ASPX webform 应用程序,其中我有一个带有文本框控件的 gridview。我的问题是,我只想在此文本框具有绑定属性时为其设置文本值。

<asp:GridView ID="grvShowRecord" runat="server" AutoGenerateColumns="False">
<Columns>
    <asp:TemplateField HeaderText="Value">
        <ItemTemplate> 
            -- Something like this, i don't know how to write in ASPX, but in Razor it will be something like
            @{
                if(Bind("txtValue")!=null) -- IF gridview has Bind("txtValue") property then show textbox else show label 
                {
                    <asp:TextBox ID="txtValue" runat="server" Text='<%# Bind("txtValue") %>' ></asp:TextBox>    
                }
                else
                {
                    <asp:Label ID="lblValue" runat="server" Text="0" ></asp:TextBox>
                }
            }                           
        </ItemTemplate>
    </asp:TemplateField>
</Columns>

注意:最初在页面加载时绑定 Gridview 时,我没有使用任何 Bind 属性,但后来我设置了这个 Bind 属性,然后再次绑定 gridview。 提前致谢

【问题讨论】:

    标签: c# asp.net gridview aspxgridview itemtemplate


    【解决方案1】:

    你可以试试这样的:

    <asp:TemplateField HeaderText="Value">
        <ItemTemplate> 
            <asp:TextBox ID="txtValue" runat="server" Text='<%# Bind("txtValue") %>' Visible='<%# !IsNullValue("txtValue") %>' />
            <asp:Label ID="lblValue" runat="server" Text="0" Visible='<%# IsNullValue("txtValue") %>' />
        </ItemTemplate>
     </asp:TemplateField>
    

    在代码隐藏中定义此实用函数:

    protected bool IsNullValue(string fieldName)
    {
        try
        {
            object value = Eval(fieldName);
            return Convert.IsDBNull(value) || value == null || value.ToString() == string.Empty;
        }
        catch
        {
            return true;
        }
    }
    

    【讨论】:

    • 获取异常“DataBinding: 'System.Data.DataRowView' 不包含名为 'txtValue' 的属性”。
    • 正如我上面所说的,当我第一次加载 gridview 时,我没有设置任何 Bind 属性,并且这个 Bind 属性是从代码隐藏文件中手动添加的
    • 我修改了答案以考虑到该字段可能并不总是存在的事实。
    猜你喜欢
    • 2020-02-09
    • 1970-01-01
    • 2015-12-19
    • 1970-01-01
    • 2016-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-08
    相关资源
    最近更新 更多