是这样吗?保存为test.aspx后运行看看效果:---------------------------
<%@Page debug=true%>
<%@Import Namespace="System.Data"%>
<%@Import Namespace="System.IO"%>
<script language="C#" runat="server">
DataTable table;
void Page_Load(object src,EventArgs e){
if(!Page.IsPostBack){
BindData();
for(int i=0;i<table.Columns.Count;i++){
chklist.Items.Add(table.Columns[i].Caption);
}
}
}void BindData(){
table=new DataTable();
table.Columns.Add(new DataColumn("addr",typeof(string)));
table.Columns.Add(new DataColumn("name",typeof(string)));
table.Columns.Add(new DataColumn("age",typeof(int)));
table.Columns.Add(new DataColumn("email",typeof(string)));
DataRow row;
for(int i=0;i<10;i++){
row=table.NewRow();
row["addr"]="addr "+i.ToString();
row["name"]="name "+i.ToString();
row["age"]=100-100%10;
row["email"]="email"+i.ToString();
table.Rows.Add(row);
}
grid.DataSource=table;
grid.DataBind();
}void ShowDataGrid(object src,EventArgs e){
BoundColumn col;
for(int i=0;i<chklist.Items.Count;i++){
if(chklist.Items[i].Selected){
col=new BoundColumn();
col.DataField=chklist.Items[i].Text;
col.HeaderText=chklist.Items[i].Text;
grid.Columns.Add(col);
}
}
BindData();
}</script>
<HTML><HEAD>
<TITLE> Webdiyer 制造:) (www.webdiyer.com) </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="Webdiyer">
</HEAD><BODY>
<form runat="server">
显示字段:<asp:CheckBoxList runat="server" id="chklist" RepeatDirection="horizontal" repeatlayout="flow"/>
<asp:Button Text="显示DataGrid" onclick="ShowDataGrid" id="btn" runat="server"/>
<asp:DataGrid runat="server" id="grid" autogenerateColumns=false  width="300">
</asp:DataGrid>
</form></BODY></HTML>

解决方案 »

  1.   

    不是
    <asp:datagrid id=DataGrid1 runat="server" AutoGenerateColumns="False" BorderColor="Black" Width="470px" AllowPaging="True" PageSize="20">
    <Columns>
    <asp:BoundColumn Visible="False" DataField="id"></asp:BoundColumn>
    <asp:BoundColumn DataField="buyorsell" HeaderText="买或卖">
    <HeaderStyle HorizontalAlign="Center" BackColor="#FCFAFC"></HeaderStyle>
    <ItemStyle Font-Bold="True" HorizontalAlign="Center" BackColor="#FCFAFC"></ItemStyle>
    </asp:BoundColumn>
    <asp:HyperLinkColumn DataNavigateUrlField="id" DataNavigateUrlFormatString="item.aspx?id={0}" DataTextField="goods" 
     HeaderText="物 品 名 称">
    <HeaderStyle HorizontalAlign="Center" BackColor="#FCFAFC"></HeaderStyle>
    </asp:HyperLinkColumn>
    <asp:BoundColumn DataField="kind" HeaderText="所属类型">
    <HeaderStyle HorizontalAlign="Center" BackColor="#FCFAFC"></HeaderStyle>
    </asp:BoundColumn>
    <asp:BoundColumn DataField="price" HeaderText="价格(¥)">
    <HeaderStyle HorizontalAlign="Center" BackColor="#FCFAFC"></HeaderStyle>
    <ItemStyle HorizontalAlign="Center"></ItemStyle>
    </asp:BoundColumn>
    <asp:BoundColumn DataField="deal" HeaderText="供 求">
    <HeaderStyle HorizontalAlign="Center" BackColor="#FCFAFC"></HeaderStyle>
    <ItemStyle HorizontalAlign="Center"></ItemStyle>
    </asp:BoundColumn>
    <asp:BoundColumn DataField="date" HeaderText="发布时间" DataFormatString="{0:yyyy-MM-dd}">
    <HeaderStyle HorizontalAlign="Center" BackColor="#FCFAFC"></HeaderStyle>
    <ItemStyle HorizontalAlign="Center"></ItemStyle>
    </asp:BoundColumn>
    </Columns>
    <PagerStyle Position="TopAndBottom" PageButtonCount="5" Mode="NumericPages"></PagerStyle>
    </asp:datagrid>
    然后再代码中有没有像visible=false那样把某一项给消隐了不让他显示
    注意我的代码和网页是分开的