J'ai besoin d'aide ici, je tourne actuellement en rond.Gridview tri révèle beaucoup plus que prévu!
J'ai un gridview qui est peuplée basée sur un élément de bouton radio sélectionné:
protected void btnSubmit_Click(object sender, EventArgs e)
{
if (radTopx.SelectedValue == "" || txtbxHowMany.Text == "")
{
MessageBox.Show("Please Ensure that BOTH 'The Number of Products' and Appropriate material Is selected Before You Attempt To Run a TOP x Report", "Top x Error!!!",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
GridView1.DataSourceID = null;
GridView1.DataBind();
}
else
{
int max = 0;
if (int.TryParse(txtbxHowMany.Text, out max))
{
GridView1.DataSource = this.GetMaterialData(Session["MemberKey"].ToString(), radTopx.SelectedItem.Value, "Primary", max);
GridView1.DataSourceID = String.Empty;
GridView1.DataBind();
}
}
}
Lorsque le code GetMaterialData est:
private object GetMaterialData(string MemberKey, string MaterialType, string MaterialLevel, int Count)
{
ORWeightsDataClassesDataContext db = new ORWeightsDataClassesDataContext();
var query = db.tblOnlineReportingCOMPLETEWeights
.Where(x => x.MemberId == MemberKey && x.MaterialText == MaterialType && x.MaterialLevel == MaterialLevel)
.OrderByDescending(x => x.ProductPercentage)
.Take(Count);
return query;
}
Lorsque cela est exécuté en premier lieu, cela va absolument bien et est bien paginée ... adorable. Cependant, lorsque j'essaie de trier la grille, les données changent et retournent à l'ensemble de l'ensemble de données de sa source de données.
Voici le code html & C# code derrière le gridview:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
style="z-index: 1; left: 215px; top: 560px; position: absolute; height: 133px; width: 755px; text-align: center;"
Font-Size="X-Small"
onpageindexchanging="GridView1_PageIndexChanging" onsorting="GridView1_Sorting"
AllowPaging="True" AllowSorting="True">
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataSourceID = "lqPackWeights";
GridView1.DataBind();
}
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
GridView1.DataSourceID = "lqPackWeights";
GridView1.DataBind();
}
Quelqu'un a des idées comment je peux faire en sorte que lorsque le gridview est triée, le maintien viewstate original?
Avez-vous essayé d'appliquer de nouveau la source de données lorsque vous avez appliqué le tri? Désolé, cela devrait être un commentaire et non une réponse. –