Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在gridview中隐藏和显示列_C#_Asp.net_C# 4.0_Gridview - Fatal编程技术网

C# 如何在gridview中隐藏和显示列

C# 如何在gridview中隐藏和显示列,c#,asp.net,c#-4.0,gridview,C#,Asp.net,C# 4.0,Gridview,为了根据条件在gridview中隐藏和显示列,我编写了以下代码行 <asp:TemplateField HeaderText="FirstName" Visible='<%# Eval("FirstName") != null ? true:false %>'> <ItemTemplate> <asp:Label ID="lblFirstName" runat="server" Text='<%#Eval("FirstNam

为了根据条件在gridview中隐藏和显示列,我编写了以下代码行

 <asp:TemplateField HeaderText="FirstName" Visible='<%# Eval("FirstName") != null ? true:false %>'>
    <ItemTemplate>
       <asp:Label ID="lblFirstName" runat="server" Text='<%#Eval("FirstName") %>'></asp:Label>
    </ItemTemplate>
 </asp:TemplateField>


它不起作用了

以代码更新,如下所示:

<asp:TemplateField HeaderText="FirstName" Visible='<%= !string.IsNullOrEmpty(Eval("FirstName")) ? "true" : "false" %>'>
    <ItemTemplate>
         <asp:Label ID="lblFirstName" runat="server" Text='<%#Eval("FirstName") %>'></asp:Label>
    </ItemTemplate>
</asp:TemplateField>

编辑

<asp:TemplateField HeaderText="FirstName" Visible='<%# !string.IsNullOrEmpty(Eval("FirstName")) ? "true" : "false" %>'>
    <ItemTemplate>
         <asp:Label ID="lblFirstName" runat="server" Text='<%#Eval("FirstName") %>'></asp:Label>
    </ItemTemplate>
</asp:TemplateField>

网格视图

<asp:GridView ID="GridDisplay" runat="server" AutoGenerateColumns="False" BorderStyle="Groove"
                BorderWidth="1px" BorderColor="ActiveCaptionText" Width="100%" EmptyDataText="No Record Found"
                AllowPaging="True" OnPageIndexChanging="GridDisplay_PageIndexChanging" AllowSorting="True"
                OnRowEditing="GridDisplay_RowEditing" OnRowDeleting="GridDisplay_RowDeleting"
                CssClass="listbooking ListingTable">
                <Columns>
                    <asp:TemplateField HeaderText="Booking Code">
                        <ItemTemplate>
                            <%# Eval("id")%>
                        </ItemTemplate>
                        <HeaderStyle Width="5%" />
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Property Code">
                        <ItemTemplate>
                            <%# Eval("property_id")%>
                        </ItemTemplate>
                        <HeaderStyle Width="5%" />
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Name">
                        <ItemTemplate>
                            <%# Eval("sales_username")%>
                        </ItemTemplate>
                        <HeaderStyle Width="18%" />
                    </asp:TemplateField>                                         
                </Columns>              
            </asp:GridView>

您确定
FirstName
null
且不是空字符串吗?请参阅,此FirstName很可能是string.empty且不是null。同时将true:false更改为“true”:“false”注意,将为每一行计算模板字段。您可能有填充了名字的行,也可能有不填充名字的行。那么你的期望是什么?查看其他GridView事件以处理此问题,如
bound
rowDataBound
。您可以使用一个变量来跟踪是否填充了FirstName。在
rowDataBound
事件中更新此项。然后在
bound
事件中,检查变量并相应地设置列可见性。它无法从其字符串表示形式“”为“Visible”属性创建“System.Boolean”类型的对象。
'
this.GridDisplay.Columns[2].Visible = false;