【问题标题】:Limit DatagridView column using DataTable jquery in asp.net在asp.net中使用DataTable jquery限制DatagridView列
【发布时间】:2017-04-17 21:50:08
【问题描述】:

我在 aspx 页面中有以下代码,它从母版页继承

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
    <script type="text/javascript"  src="https://cdn.datatables.net/1.10.14/js/jquery.dataTables.min.js"></script>
    <link type="text/css" href="https://cdn.datatables.net/1.10.14/css/jquery.dataTables.min.css" rel="stylesheet" />
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="cntHeader" runat="server"></asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="cntContent" runat="server">
    <div class="table-responsive">
        <table id="myTable" class="table table-striped" >  
            <asp:GridView ID="gvState" runat="server" CssClass="gvdatatable" AutoGenerateColumns="true" >
                 <Columns>    
                     <asp:BoundField DataField="Supplier_Name" HeaderText="Name" ItemStyle-Width="150" />
                     <asp:BoundField DataField="Supplier_Email" HeaderText="Email" ItemStyle-Width="150" />
                 </Columns>
            </asp:GridView>
        </table>
    </div>
    <script type="text/javascript">
        $(document).ready(function () {
            $('.gvdatatable').dataTable({});
        });
    </script>
</asp:Content>

我的代码是

public partial class WebForm1 : System.Web.UI.Page
{
    clsSupplier objsupplier = new clsSupplier();
    protected void Page_Load(object sender, EventArgs e)
    {
        DataSet ds = objsupplier.GetAllSuppliers();
        gvState.DataSource = ds;
        gvState.DataBind();
        if (!IsPostBack)
        {
            this.gvState.ShowFooter = true;
            this.gvState.UseAccessibleHeader = true;
            gvState.HeaderRow.TableSection = TableRowSection.TableHeader;   
            gvState.FooterRow.TableSection = TableRowSection.TableFooter;
        }
    }
}

GetAllSuppliers 包含所有数据。它包含来自 db 的 8 个字段和值,我不想显示所有这 8 个字段及其 值,但只有 2 个字段。

但是我在 aspx 页面中写的任何东西都不起作用。您可以看到我只使用了姓名和电子邮件,但它显示了数据库表中的所有 8 列。

如何限制这是 asp.net 页面?因为我无权访问 数据库部分并获取所有记录。我使用数据表来显示 数据。

【问题讨论】:

    标签: c# asp.net datagrid datatables


    【解决方案1】:

    您需要将 AutoGenerateColumns 设为 false。

    <asp:GridView ID="gvState" runat="server" CssClass="gvdatatable" AutoGenerateColumns="false" >
        <Columns>
            <asp:BoundField DataField="Supplier_Name" HeaderText="Name" ItemStyle-Width="150" />
            <asp:BoundField DataField="Supplier_Email" HeaderText="Email" ItemStyle-Width="150" />
        </Columns>
    </asp:GridView>
    

    【讨论】:

      【解决方案2】:

      您可以使用Columns.Visible 隐藏它们:

      foreach (DataControlField dgc in gvState.Columns)
      {
          if (!(dgc.HeaderText == "NAME") || !(dgc.HeaderText == "Email"))
          {
              dgc.Visible = false;
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-12
        • 1970-01-01
        • 2013-04-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多