ASP.NET Repeater具有空值

10 浏览
0 Comments

ASP.NET Repeater具有空值

我正在使用ASP.NET Repeater来动态生成HTML代码和分页。我在两个aspx页面上使用完全相同的代码,在其中一个页面上一切正常工作,但在另一个页面上我得到一个异常:对象引用未设置为对象的实例。

现在我明白为什么发生异常了,它只是具有空值,我猜测Repeater没有渲染。但是有人知道为什么会发生这个错误吗?为什么它在一个页面上工作,而在另一个页面上不工作?我应该从哪里寻找“真正”的问题?

这是我的aspx页面上的HTML代码:



            
                x
            +
            
  • " />
  • " />
保存 删除
<%# Container.DataItem %>

这是后台代码:

protected void BindRepeater()
{
    string ConnectionString = "Data Source=PRACTICE-001;Initial Catalog=n.mosorinski;User ID=n.mosorinski;Password=n.mosorinski;MultipleActiveResultSets=True;Application Name=EntityFramework";
    SqlConnection con = new SqlConnection(ConnectionString);
    SqlCommand cmd = new SqlCommand("SELECT p.ProjectName, p.Description, c.ClientName FROM Project AS p INNER JOIN Client AS c ON p.CustomerID = c.ClientID", con);
    if (con.State == ConnectionState.Closed)
    {
        con.Open();
    }
    DataTable dt = new DataTable();
    SqlDataAdapter adp = new SqlDataAdapter(cmd);
    adp.Fill(dt);
    PagedDataSource pgitems = new PagedDataSource();
    DataView dv = new DataView(dt);
    pgitems.DataSource = dv;
    pgitems.AllowPaging = true;
    pgitems.PageSize = 5;
    pgitems.CurrentPageIndex = PageNumber;
    if (pgitems.PageCount > 1)
    {
        rptPagingProject.Visible = true;
        ArrayList pages = new ArrayList();
        for (int i = 0; i < pgitems.PageCount; i++)
            pages.Add((i + 1).ToString());
        rptPagingProject.DataSource = pages;
        rptPagingProject.DataBind();
    }
    else
    {
        rptPagingProject.Visible = false;
    }
    projectRepeter.DataSource = pgitems;
    projectRepeter.DataBind();
}
public int PageNumber
{
    get
    {
        if (ViewState["PageNumber"] != null)
            return Convert.ToInt32(ViewState["PageNumber"]);
        else
            return 0;
    }
    set
    {
        ViewState["PageNumber"] = value;
    }
}
protected void rptPaging_ItemCommand(object source, RepeaterCommandEventArgs e)
{
    PageNumber = Convert.ToInt32(e.CommandArgument) - 1;
    BindRepeater();
}

0