Ok, s'il vous plaît garder avec moi que je peux être un peu d'un canard en bois parfois ...radiomessagerie de grandes quantités de données dans un Gridview
J'ai un gridview en asp.net qui sera tirant beaucoup mille d'enregistrements. Tout cela va bien en dehors de l'aspect performance des choses. Je lie mon Gridview à un ensemble de données et cela annule chaque enregistrement dans la requête. Je veux changer ceci de sorte que la vue de grille retire seulement les dossiers qu'elle affiche actuellement et puis quand l'utilisateur se déplace à la page suivante elle passe et obtient le prochain mandrin de données etc.
Voici comment je lie normalement mon gridviews et gérer la pagination et le tri, ce qui fonctionne très bien pour moi avec de petites quantités de données, mais pas si bon pour de grandes quantités de données. J'utilise SubSonic comme DAL, ce qui est cool. Quelqu'un peut-il me diriger dans la bonne direction sur la meilleure façon de réaliser la radiomessagerie comme décrit ci-dessus?
Merci à l'avance ...
public SortDirection SortDir
{
get
{
if (ViewState["sortDirection"] == null)
{
ViewState["sortDirection"] = SortDirection.Ascending;
} return (SortDirection)ViewState["sortDirection"];
}
set
{
ViewState["sortDirection"] = value;
}
}
DataSet ds = new DataSet();
DataView dv = new DataView();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindGrid();
GridView1.DataSource = dv;
GridView1.DataBind();
}
}
private DataView BindGrid()
{
ds = new Query(AnthemWeb.DAL.Item.Schema).ExecuteDataSet();
if (ViewState["sortExpr"] != null)
{
dv = new DataView(ds.Tables[0]);
dv.Sort = (string)ViewState["sortExpr"];
}
else
{
dv = ds.Tables[0].DefaultView;
}
return dv;
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataSource = BindGrid();
GridView1.DataBind();
}
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
string stExp = e.SortExpression;
string stDir = string.Empty;
if (SortDir == SortDirection.Ascending)
{
SortDir = SortDirection.Descending;
stDir = "DESC";
}
else
{
SortDir = SortDirection.Ascending;
stDir = "ASC";
}
ViewState["sortExpr"] = e.SortExpression + " " + stDir;
GridView1.DataSource = BindGrid();
GridView1.DataBind();
}
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
int selectedRowIndex;
selectedRowIndex = GridView1.SelectedIndex;
GridViewRow row = GridView1.Rows[selectedRowIndex];
string ID = row.Cells[0].Text;
Response.Redirect("customer-details.aspx?ID=" + ID, false);
}
Merci beaucoup les gars pour les réponses. J'essaie d'utiliser la méthode paginée dans Subsonic, mais le problème que je suis maintenant est que les contrôles de pager sur le gridview n'apparaissent pas ?? Je crée une collection et lie le gridview à ceci. Je passe en. Paged (pageIndex, 6). Le allowpaging est défini sur le gridview et j'ai une méthode pour gérer l'événement GridView1_PageIndexChanging - BindPagedData (e.NewPageIndex, 6); Aucun contrôle pour se déplacer dans la pagination n'apparaît - il y a 120 enregistrements à tester. Est-ce que je vais à ce sujet dans le mauvais sens? Merci pour toute l'aide que vous pouvez nous apporter. – macou