2017-04-17 33 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; 
    } 
}