我有一个筛选器选择顶部,搜索按钮和ListView与自定义传呼(女巫是一个Repeater女巫包含LinkButtons页码)在底部的网页。asp.net 3.5 ListView
当我选择过滤器并单击搜索按钮时,我将结果放在列表<>和DataBinding它们在ListView。函数witch返回的结果有两个属性StartIndex和PageSize。所以当我点击一个页面时,我再次用新的PageIndex调用函数。有时结果需要ListView中的更多列。 所以我创建了两个类(ResultsLayoutTemplate.cs,ResultsItemTemplate.cs)来设计ListView的布局。
问题是,当我选择一个页面(ListView的自定义页面),结果需要更多列到ListView时,表格的标题不会更改列并保留以前的页面页眉设计。行有正确的列。 例如在第一页ListView有8列,第二页ListView必须有13列。但它为头保留了8列。当第三页需要8列时,也会发生同样的情况。问题只在标题上。
这是代码。
protected void ListView1_LayoutCreated(object sender, EventArgs e)
{
results = Session["results"] as List<Res>;
if (results.Count > 0)
{
Session["columns"] = results.Max(i => i.columns.Count);
}
ListView lv = sender as ListView;
ListView1.LayoutTemplate = new ResultsLayoutTemplate((int)Session["columns"]);
ListView1.ItemTemplate = new ResultsItemTemplate((int)Session["columns"]);
ListView1.AlternatingItemTemplate = new AlterResultsItemTemplate((int)Session["columns"]);
Control newlayoutContainer = new Control();
lv.LayoutTemplate = new ResultsLayoutTemplate((int)Session["columns"]);
lv.LayoutTemplate.InstantiateIn(newlayoutContainer);
var usercontrol = newlayoutContainer.Controls[0];
usercontrol.ID = "MyLayout";
lv.Controls.Add(newlayoutContainer);
}
protected void Page_PreRender(object sender, EventArgs e)
{
int num;
bool isNum = Int32.TryParse(Session["page"].ToString(), out num);
if ((Int32.Parse(Session["page"].ToString()) > 0) && (isNum))
{
results = Session["results"] as List<Res>;
Session["platos"] = results.Max(i => i.quadruplette.Count);
ListView1.Items.Clear();
ListView1.ItemTemplate = new ResultsItemTemplate((int)Session["columns"]);
ListView1.AlternatingItemTemplate = new AlterResultsItemTemplate((int)Session["columns"]);
ListView1.DataSource = results;
ListView1.DataBind();
}
}
protected void lbPage_Click(object sender, EventArgs e)
{
LinkButton btn = sender as LinkButton;
int num;
bool isNum = Int32.TryParse(btn.Text, out num);
if (isNum)
{
Session["page"] = btn.Text;
}
results = GetResults(Filters, (Int32.Parse(Session["page"].ToString()) - 1) * PageSize, PageSize);
Session["results"] = results;
Session["columns"] = results.Max(i => i.columns.Count);
}
}