【问题标题】:How to Enable/Disable ItemTemplate dynamically in ASP.Net Gridview如何在 ASP.Net Gridview 中动态启用/禁用 ItemTemplate
【发布时间】:2021-08-25 10:49:27
【问题描述】:

如果该列不是源数据表的一部分,我想禁用 gridview ItemTemplate 列。 谁能指导我如何做到这一点?以下是我的代码,我的数据源中可能存在也可能不存在该列。

 <ItemTemplate>
     <asp:Label ID="lbl_Status" SkinID="custom_label" runat="server" 
     Text='<%#Eval("Status") %>'>
     </asp:Label>
 </ItemTemplate>

【问题讨论】:

  • 如果数据表中该列的任何行中没有数据,您想禁用整个列????
  • @AmitGupta 是的,我想要那个
  • 然后您可以在绑定之前从 C# 将可见性设置为 false。您需要示例代码吗?

标签: asp.net gridview datagridview aspxgridview


【解决方案1】:

好的,假设这个标记?

    <div style="width:50%"> 
        <asp:GridView ID="GridView1" runat="server" 
            AutoGenerateColumns="False" DataKeyNames="ID" CssClass="table table-hover">
            <Columns>
                <asp:BoundField DataField="FirstName" HeaderText="FirstName" SortExpression="FirstName" />
                <asp:BoundField DataField="LastName" HeaderText="LastName" SortExpression="LastName" />
                <asp:BoundField DataField="HotelName" HeaderText="HotelName" SortExpression="HotelName" />
                <asp:BoundField DataField="City" HeaderText="City" SortExpression="City" />

                <asp:TemplateField HeaderText="Select">
                    <ItemTemplate>
                        <asp:Button ID="cmdSel" runat="server" Text="Select"
                            onclick="cmdSel_Click"/>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>

好的,我们填写的代码如下所示:

子 LoadGrid()

    Using cmdSQL As New SqlCommand("SELECT ID, FirstName, LastName, HotelName, City from tblHotels",
                    New SqlConnection(My.Settings.TEST3))
        cmdSQL.Connection.Open()

        Dim rstTable As New DataTable
        rstTable.Load(cmdSQL.ExecuteReader)
        If rstTable.Columns.Contains("City") = False Then
            GridView1.Columns(3).Visible = False
        End If

        GridView1.DataSource = rstTable
        GridView1.DataBind()

    End Using
End Sub

所以输出是这样的:

但是,如果我说用这个 sql 省略 city 列?

SELECT ID, FirstName, LastName, HotelName from tblHotels

那么输出是这样的:

没有简单的按列名引用的方法 - 所以通常有些人会编写一个小助手例程来按列名工作 - 但无论如何,您可以检查该列是否存在于数据源中 - 如果您设置 Visible=False对于该列,它根本不会被渲染,因此 Eval() 表达式也不会运行。

【讨论】:

    猜你喜欢
    • 2023-03-17
    • 2013-12-14
    • 1970-01-01
    • 1970-01-01
    • 2012-01-24
    • 1970-01-01
    • 2012-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多