Asp.net 将TemplateField的可见性绑定到BoundField的内容

Asp.net 将TemplateField的可见性绑定到BoundField的内容,asp.net,data-binding,gridview,webforms,Asp.net,Data Binding,Gridview,Webforms,TemplateField的“Visible”标记中的(伪代码)表达式是我想要实现的,有什么想法吗? 我真的很想以声明的方式去做。无OnRowCreated事件处理,单元格[x] <asp:GridView ID="GridViewTest" runat="server" AutoGenerateColumns="false"> <Columns> <asp:BoundF

TemplateField的“Visible”标记中的(伪代码)表达式是我想要实现的,有什么想法吗? 我真的很想以声明的方式去做。无OnRowCreated事件处理,单元格[x]

            <asp:GridView ID="GridViewTest" runat="server" AutoGenerateColumns="false">
                <Columns>
                    <asp:BoundField DataField="MyProperty" HeaderText="My Property" />
                    <asp:TemplateField Visible="<%# MyProperty == 'VisibleString' %>">
                        <ItemTemplate>
                            <asp:ImageButton ID="ImageButton1" runat="server" AlternateText="" ImageUrl="" OnClick="ImageButton1_Click" />
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>

无法在TemplateField列本身上执行此操作,因为它不支持数据绑定。我必须在ImageButton内完成。现在它可以完美地工作:

<asp:ImageButton Visible='<%# Eval("MyProperty") == "VisibleString" %>' [...] />


不幸的是,这同样适用于BoundFields。不幸的是,这只会隐藏内容(在您的案例中是图像),而不会隐藏列,并且会隐藏列标题。它将显示空行。