did you accidentally set PagerStyle-Position="TopAndBottom"? try PagerStyle-Position="Bottom"?  how are you adding dgi and dgi1?

解决方案 »

  1.   

    没有,设的就是PagerStyle-Position="Bottom",我是在
    Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
            Dim dgi As DataGridItem
            Dim dgi1 As DataGridItem
            Dim tb As New Table()
            Dim tc As New TableCell()
            Select Case e.Item.ItemType
                Case ListItemType.Header
    隐藏原来的表头,自己手动加入自定多行表头的.我现在怀疑自定义表头被当成另一个datagrid,顶上的页面导航其实是这个datagrid的底部页面导航
    请思归再看一下.我搞了半天,检查了很多状态都发现不出问题,这两个导航页要不是同时出现,要不一起隐藏,无法单独控制,从这一点上看又象是一个datagrid的
      

  2.   

    tb.Rows.AddAt(0, dgi)
    tb.Rows.AddAt(1, dgi1)
    为datagrid的header加入两行,后面就是加入单元格了
      

  3.   

    cannot reproduce your problems, but here is a hack, instead of removing the origional header, you hide it:
    <%@ Page Language="C#" %>
    <%@ import Namespace="System.Data" %>
    <script runat="server">    ICollection CreateDataSource() {
             DataTable dt = new DataTable();
             DataRow dr;         dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32)));
             dt.Columns.Add(new DataColumn("StringValue", typeof(string)));
             dt.Columns.Add(new DataColumn("DateTimeValue", typeof(string)));
             dt.Columns.Add(new DataColumn("BoolValue", typeof(bool)));         for (int i = 0; i < 200; i++) {
                 dr = dt.NewRow();             dr[0] = i;
                 dr[1] = "Item " + i.ToString();
                 dr[2] = DateTime.Now.ToShortDateString();
                 dr[3] = (i % 2 != 0) ? true : false;             dt.Rows.Add(dr);
             }         DataView dv = new DataView(dt);
             return dv;
         }     void Page_Load(Object sender, EventArgs e) {         if (!IsPostBack)
                BindGrid();
         }     void MyDataGrid_Page(Object sender, DataGridPageChangedEventArgs e) {
             MyDataGrid.CurrentPageIndex = e.NewPageIndex;         BindGrid();
         }     void BindGrid() {
             MyDataGrid.DataSource = CreateDataSource();
             MyDataGrid.DataBind();
         }    void MyDataGrid_ItemCreated(Object sender , DataGridItemEventArgs e)
        {        if (e.Item.ItemType == ListItemType.Header)
            {
              e.Item.Visible = false;          Table t = (Table)MyDataGrid.Controls[0];
              DataGridItem dgi = new DataGridItem(0, -1, ListItemType.Header);
              DataGridItem dgi1 = new DataGridItem(0, -1, ListItemType.Header);
              for (int i =0 ; i < e.Item.Cells.Count; i++)
              {
                    TableCell tc = new TableCell();
                    tc.Text = i.ToString();
                    dgi.Cells.Add(tc);
                    t.Rows.Add(dgi);
                    TableCell tc1 = new TableCell();
                    tc1.Text = i.ToString();
                    dgi1.Cells.Add(tc1);
                    t.Rows.Add(dgi1);
              }        }
        }</script>
    <html>
    <head>
    </head>
    <body>
        <h3><font face="Verdana">Basic Paging with DataGrid</font>
        </h3>
        <form runat="server">
            <ASP:DataGrid id="MyDataGrid" runat="server" ShowHeader="true"
            AllowPaging="True" PageSize="10" PagerStyle-Mode="NumericPages"
            PagerStyle-HorizontalAlign="Right" PagerStyle-NextPageText="Next"
            PagerStyle-PrevPageText="Prev" OnPageIndexChanged="MyDataGrid_Page"
            BorderColor="black" BorderWidth="1" GridLines="Both" CellPadding="3"
            CellSpacing="0" Font-Name="Verdana" Font-Size="8pt"
            HeaderStyle-BackColor="#aaaadd" AlternatingItemStyle-BackColor="#eeeeee"
            PagerStyle-Position="Bottom"
            OnItemCreated="MyDataGrid_ItemCreated"
            ></ASP:DataGrid>
            <p>
                <asp:Button id="Button1" runat="server" Text="Button"></asp:Button>
            </p>
        </form>
    </body>
    </html>