可以动态创建http://www.datawebcontrols.com/Articles/Goto.aspx?ID=18

解决方案 »

  1.   

    看看:
    <%@ Page Language="VB" %>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.OleDb" %>
    <html>
    <script runat="server">
    Public dim MyName,HisName as string
    Sub Page_Load(Sender As Object, E As EventArgs)
        MyName="admin"
    HisName="nhonline"
    Dim  MyConnection as OleDbConnection = New OleDbConnection( "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=c:\inetpub\wwwroot\nhonline\datagrid\kk.mdb") Dim myCommand As OleDbCommand = new OleDbCommand("Select * From board", myConnection)

    Dim myDataReader As OleDbDataReader Try
       myConnection.Open()    'myDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection)
       myDataReader = myCommand.ExecuteReader
       myDataGrid.DataSource = myDataReader
       myDataGrid.DataBind()
    Catch myException As Exception
       Response.Write("An error has occurred: " & myException.ToString())
    Finally
       If Not myDataReader Is Nothing Then
           myDataReader.Close()
       End If
    End Try
    End SubSub HideShow_Click(Sender As Object, E As EventArgs)
    If myDataGrid.Columns(0).Visible = False Then
    myDataGrid.Columns(0).Visible = True
    Else
    myDataGrid.Columns(0).Visible = False
    End If
    End Sub
    </script>
    <body>
    <form runat="server">
    <asp:Button id="HideShow" Text="Hide/Show" OnClick="HideShow_Click" runat="server" />&nbsp;&nbsp;<A HREF="datagrid_hidecolumn_2.aspx?name=<%=Myname%>">MyName=admin</A>&nbsp;&nbsp;<A HREF="datagrid_hidecolumn_2.aspx?name=<%=Hisname%>">HisName=nhonline</A><BR><hr color=red>
    <asp:DataGrid id="myDataGrid" Width="25%" AutoGenerateColumns="false" runat="server">
    <Columns>
    <asp:TemplateColumn HeaderText="Board_ID">
      <ItemTemplate>
          <span><%# Container.DataItem("boardid") %></span>
      </ItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="boardtype">
      <ItemTemplate>
          <span><%# Container.DataItem("boardtype") %></span>
      </ItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="class">
      <ItemTemplate>
          <span><%# Container.DataItem("class") %></span>
      </ItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="readme">
      <ItemTemplate>
          <span><%# Container.DataItem("readme") %></span>
      </ItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="boardmaster">
      <ItemTemplate>
          <span><%# Container.DataItem("boardmaster") %></span>
      </ItemTemplate>
    </asp:TemplateColumn>
    </Columns>
    </asp:DataGrid>
    </form>
    </body>
    </html>
      

  2.   

    谢谢回答,但我想的不是把整个<columns>标记隐藏,而是把其中的<asp:TemplateColumn >标记隐藏,并且不单是隐藏<asp:TemplateColumn >标记内的控件,而是整一个<asp:TemplateColumn >标记,希望各位前辈能继续帮忙。
      

  3.   

    把Visible放在<asp:TemplateColumn>标签里面不就好了么?我也是这样做的,只是没有动态的设置而已,应该是一样的
      

  4.   

    看我的例子:
    if (e.Item.ItemIndex >= 0 && e.Item.DataItem is DataRowView)
    {
    if (((DataRowView)e.Item.DataItem)["ContestId2"].ToString()=="")
    {
    e.Item.Cells[1].Visible   = false;
    }
    }
    意思就是竞赛编号为空的话,第二个模板列隐藏
      

  5.   

    忘了告诉你在NominatedGrid_ItemDataBound(object sender, DataGridItemEventArgs e)事件里写上上面的语句
    if (e.Item.ItemIndex >= 0 && e.Item.DataItem is DataRowView)
    这句是必须的