把动态绑定datagrid写成一函数,再分页时调用

解决方案 »

  1.   

    页面文件: <table cellSpacing="0" cellPadding="0" width="100%" border="0">
    <TBODY>
    <tr>
    <td><asp:datagrid id="DG_Report" AllowPaging="True" PageSize="15" Width="100%" AutoGenerateColumns="False"
    runat="server">
    <AlternatingItemStyle BackColor="WhiteSmoke"></AlternatingItemStyle>
    <HeaderStyle BackColor="#CCCCCC"></HeaderStyle>
    <Columns>
    <asp:TemplateColumn>
    <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
    <ItemStyle HorizontalAlign="Center"></ItemStyle>
    <ItemTemplate>
    <IMG height="13" src="../images/14.gif" width="13">
    </ItemTemplate>
    </asp:TemplateColumn>
    <asp:BoundColumn Visible="False" DataField="MemID">
    <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
    <ItemStyle HorizontalAlign="Center"></ItemStyle>
    </asp:BoundColumn>
    <asp:BoundColumn HeaderText="序号">
    <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
    <ItemStyle HorizontalAlign="Center"></ItemStyle>
    </asp:BoundColumn>
    <asp:HyperLinkColumn Target="_blank" DataNavigateUrlField="MemID" DataNavigateUrlFormatString="../admin/MemDetail.aspx?MemID={0}"
    DataTextField="UserName" HeaderText="用户名" NavigateUrl="../admin/MemDetail.aspx">
    <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
    <ItemStyle HorizontalAlign="Center"></ItemStyle>
    </asp:HyperLinkColumn>
    <asp:HyperLinkColumn Target="_blank" DataNavigateUrlField="MemID" DataNavigateUrlFormatString="MemDetail.aspx?MemID={0}"
    DataTextField="NickName" HeaderText="昵称" NavigateUrl="MemDetail.aspx">
    <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
    <ItemStyle HorizontalAlign="Center"></ItemStyle>
    </asp:HyperLinkColumn>
    <asp:BoundColumn DataField="RegTime" HeaderText="注册日期" DataFormatString="{0:d}">
    <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
    <ItemStyle HorizontalAlign="Center"></ItemStyle>
    </asp:BoundColumn>
    <asp:BoundColumn DataField="Validate" HeaderText="是否通过审查">
    <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
    <ItemStyle HorizontalAlign="Center"></ItemStyle>
    </asp:BoundColumn>
    <asp:ButtonColumn Text="删除" HeaderText="删除" CommandName="Delete">
    <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
    <ItemStyle HorizontalAlign="Center"></ItemStyle>
    </asp:ButtonColumn>
    </Columns>
    <PagerStyle Visible="False"></PagerStyle>
    </asp:datagrid>
    </FONT></TD></TR>
    <TR>
    <TD align="center"><FONT face="宋体">共有记录:
    <asp:label id="TotalRecord" runat="server">Label</asp:label>条
    <asp:label id="TotalPage" Width="74px" runat="server">共几页</asp:label><asp:label id="PageNo" Width="85px" runat="server">第几页</asp:label>&nbsp;<asp:linkbutton id="Back" runat="server" ForeColor="Blue" Font-Underline="True">上一页</asp:linkbutton>&nbsp;
    <asp:linkbutton id="Next" runat="server" ForeColor="Blue" Font-Underline="True">下一页</asp:linkbutton>&nbsp; 
    跳至第:<asp:textbox id="JumpPage" Width="38px" runat="server">1</asp:textbox>页
    <asp:imagebutton id="Jump" runat="server" ImageUrl="..\images\go1.gif"></asp:imagebutton></FONT></TD>
    </TR>
    </TBODY></TABLE>
    代码文件:
    //数据绑定
    private void BindGrid()
    {
    dataoperate dp = new dataoperate("ConnStrNetBar");
    string cmStr = "select....";
    SqlDataAdapter da = new SqlDataAdapter(cmStr,dp.Cn);
                DataSet ds = new DataSet();
    da.Fill(ds, "members");
                DG_Report.DataSource = ds.Tables["members"].DefaultView;
                DG_Report.DataBind();
                TotalRecord.Text = ds.Tables["members"].Rows.Count.ToString();
                PageFooter();
    } //页数、第几页统计显示
    private void PageFooter()
    {
    TotalPage.Text="共:"+DG_Report.PageCount+"页";
    int PageNum = DG_Report.CurrentPageIndex + 1;
    PageNo.Text="当前第: "+PageNum.ToString()+"       页";  
    JumpPage.Text = PageNum.ToString();                        
    } //上一页
    private void Back_Click(object sender, System.EventArgs e)
    {
    if(DG_Report.CurrentPageIndex <= 0)
    Response.Write("<script>alert('已是第一页!');</script>");
    else
    {
    DG_Report.CurrentPageIndex -= 1;
    BindGrid();
    int PageNum = this.DG_Report.CurrentPageIndex + 1;
    this.JumpPage.Text = PageNum.ToString();
    }
    } //下一页
    private void Next_Click(object sender, System.EventArgs e)
    {
    if(DG_Report.CurrentPageIndex >= DG_Report.PageCount-1)
    Response.Write("<script>alert('已到最后一页!');</script>");
    else
    {
    DG_Report.CurrentPageIndex += 1;
    BindGrid();
    int PageNum = this.DG_Report.CurrentPageIndex + 1;
    this.JumpPage.Text = PageNum.ToString();
    }
    } //转到第几页
    private void Jump_Click(object sender, System.Web.UI.ImageClickEventArgs e)
    {
    Regex digitregex = new Regex(@"^[0-9]\d*[.]?\d*$");
    if (!digitregex.IsMatch(JumpPage.Text))
    {
    JumpPage.Text="";
    Response.Write("<script>alert('只能输入数字!');</script>");
    }
    else
    {
    int js;
    js=Convert.ToInt32(JumpPage.Text.ToString())-1;
    if (js>DG_Report.PageCount-1)
    {
    Response.Write("<script>alert('输入的数值要在总页数范围之内!');</script>");
    }
    else if(js<0) 
    {
    Response.Write("<script>alert('输入的数值要在总页数范围之内!');</script>");
    }
    else
    {
    DG_Report.CurrentPageIndex=js;
    BindGrid();
    }
    }
    } //绑定
    private void DG_Report_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if(e.Item.ItemIndex > -1)
    e.Item.Cells[2].Text = Convert.ToString(Convert.ToInt32(DG_Report.CurrentPageIndex)*15 + e.Item.ItemIndex + 1); if(e.Item.Cells[6].Text.Trim()=="未通过审查")
    e.Item.Cells[6].ForeColor = System.Drawing.Color.Red; e.Item.Cells[7].Attributes.Add("onclick", "if(confirm('您确信要删除吗?')){}else{return false}");
    } //删除用户
    private void DG_Report_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    Member m = new Member();
    int flag = m.MemberDel(Convert.ToInt32(e.Item.Cells[1].Text));
    if(flag > 0 )
    {
    Response.Write("<script>alert('删除成功!');</script>");
    BindGrid();
    }
    else
    Response.Write("<script>alert('删除失败!');</script>"); } 页面文件复制到你的页面的相应位置,将列改为你相应的列
    代码文件复制到代码页,把事件加上即可!
      

  2.   

    private void bindData()
    {
    DataTable tb = new DataTable();
    tb.Columns.Add("AAA");
    tb.Columns.Add("BBB");
    tb.Columns.Add("CCC");
    tb.PrimaryKey = new DataColumn[]{tb.Columns[0],tb.Columns[1]};

    tb.Rows.Add(new object[]{"1","B3","C2"});
    tb.Rows.Add(new object[]{"2","B2","C1"});
    tb.Rows.Add(new object[]{"3","B1","C3"});
    tb.Rows.Add(new object[]{"11","B3","C2"});
    tb.Rows.Add(new object[]{"12","B2","C1"});
    tb.Rows.Add(new object[]{"13","B1","C3"});
    tb.Rows.Add(new object[]{"21","B3","C2"});
    tb.Rows.Add(new object[]{"22","B2","C1"});
    tb.Rows.Add(new object[]{"23","B1","C3"});
    tb.Rows.Add(new object[]{"31","B3","C2"});
    tb.Rows.Add(new object[]{"32","B2","C1"});
    tb.Rows.Add(new object[]{"33","B1","C3"}); System.Web.UI.WebControls.BoundColumn col = new BoundColumn();
    col.HeaderText ="ccc";
    col.DataField = "ccc";
    DataGrid1.Columns.Add(col); DataGrid1.DataSource = tb;
    DataGrid1.DataBind(); } private void DataGrid1_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
    {
    this.DataGrid1.CurrentPageIndex = e.NewPageIndex;
    bindData();
    }
      

  3.   

    代码文件的邦定BindGrid()你自己改一下,在那里我用了自己的类,删除里面也是!
      

  4.   

    手工加的绑定列需要在每次调用DataGrid.DataBind()前都要加上,否则DataGrid重新绑定的时候就不会出现你手工加的列