我有一個篩選器選擇頂部,搜索按鈕和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);
}
}