2017-04-17 32 views
0

我有以下的aspx页面代码,并从母版页继承其限制的DataGridView列

<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页面?由于我没有访问 数据库部分并获取所有记录。我使用数据表来显示 数据。

回答

0

你需要做的AutoGenerateColumns假的。

<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> 
0

你可以使用Columns.Visible隐藏起来:

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