我有一個Web表單,我需要根據某些條件對項目/行進行分組。它具有多級分組功能,這就是爲什麼網格中的渲染項目變成服務器非常繁瑣的過程的原因。在Gridview中提高分組速度
這是我現在做的。 (這只是3級)。
protected void ResultGrid_PreRender(object sender, EventArgs e)
{
foreach (GridViewRow gdR in ResultGrid.Rows)
{
Label lblClass = (Label)gdR.FindControl("lblClass");
Label lblCategory = (Label)gdR.FindControl("lblCategory");
Label lblCompartment = (Label)gdR.FindControl("lblCompartment");
Panel pnlClassLinks = (Panel)gdR.FindControl("pnlClassLinks");
foreach (GridViewRow gdRIn in ResultGrid.Rows)
{
if (gdRIn.RowIndex != gdR.RowIndex)
{
Label lblClassIn = (Label)gdRIn.FindControl("lblClass");
Label lblCategoryIn = (Label)gdRIn.FindControl("lblCategory");
Label lblCompartmentIn = (Label)gdRIn.FindControl("lblCompartment");
if(lblClassIn.Text == lblClass.Text)
{
if(lblCategoryIn.Text == lblCategory.Text)
{
if(lblCompartmentIn.Text == lblCompartment.Text)
{
LinkButton lnkBtn = new LinkButton();
// lnkBtn Properties added
pnlClassLinks.Controls.Add(lnkBtn);
if (pnlClassLinks.Controls.Count > 2)
{
pnlClassLinks.Width = 150;
}
if (gdR.Visible)
{
dr.Visible = false;
}
}
}
}
}
}
LinkButton lnkGroupEdit = (LinkButton)gdR.FindControl("lnkGroupEdit");
lnkGroupEdit.OnClientClick = "editGroup();";
}
}
正如它清楚地表明,當gridview中的行數增加時,行迭代太多。那麼,有沒有更好的方法來做到這一點?
對我來說,解決方案是在呈現之前對數據進行分組...... – Aristos 2015-02-24 11:33:57
@Aristos,如果您的意思是'PreRender',那就是我所做的。 'DataBound'方法中還有其他的處理,一旦完成,'PreRender'就會看到它被正確分組。 – Cyberpks 2015-02-25 05:15:27