用户控件程序片断如下:
public partial class WUC_ListTemplate : System.Web.UI.UserControl
{
    private int nItemPerPage;         //为0则每页显示所有数据项
    private int nNumPage;
    private int nCurPage;       //当前页数
    private DataTable ItemTable;    public WUC_ListTemplate(int nNum){
        nItemPerPage = nNum;
        nCurPage = 1;
        ItemTable = new DataTable();
        //从数据库读出表格
        GetTableFromDB();
        //计算需要分页数 *实际上就是表格中记录总数/nItemPerPage(每页记录数)*
        CountNumPage(ItemTable);
    }
    public WUC_ListTemplate() {
        nItemPerPage = 0;
        nNumPage = 1;
        nCurPage = 1;
        ItemTable = new DataTable();
        GetTableFromDB();    }
    private void UpdateDisplay(){               //更新显示 作用是将处理后的结果显示在屏幕上
        
    }
    protected void Page_Load(object sender, EventArgs e)
    {   //断点2        UpdateDisplay();
    }
}在Default.aspx.cs中调用
    protected void Page_Load(object sender, EventArgs e)
    {
        WUC_ListTemplate  MyWuc = new WUC_ListTemplate(5);
    }      //断点1
到达断点1时nItemPerPage,nNumPage,nCurPage三个值是通过执行构造函数WUC_ListTemplate(int nNum)得到的结果,再按一下F11到达断点2,这是通过局部变量窗口看到nItemPerPage,nNumPage,nCurPage三个值0,1,1根无参数的构造函数运行结果一样~~~难道在加载用户控件窗体的时候自动调用了一下默认构造函数?请问怎样才能正确地传入数据?

解决方案 »

  1.   

    呵呵,你最好还是把赋值写到Page_Load里。
      

  2.   

    最简单的是 private int nItemPerPage;         //为0则每页显示所有数据项
        private int nNumPage;
        private int nCurPage;    都改成PUBLIC 
    然后在LOAD之后对他们赋值  或者 你写一个PUBLIC的函数 通过他 把数据传进去 也可以进行你自己需要的初始设置  然后再 ADD到应该出现的位置上去
      

  3.   

    protected void Page_Load(object sender, EventArgs e)
    {
    WUC_ListTemplate MyWuc = new WUC_ListTemplate(5);
    } //断点这样动态加载用户控件是错误的。
    WUC_ListTemplate是你的用户控件的基类,并不是这正的用户控件。要用
    Page.LoadControl 加载