Ceci est une question hypothétique qui m'a envoyé dans le jardin ... Dites que j'ai un gridview que je voudrais éditer ... donné une méthode qui lie les données ..Asp.Net GridView EditIndex situation de concurrence?
private void BindGridFirst() {
var data = new List<string>() {
"A","B","C","D","E","F"
};
gridView.DataSource = data;
gridView.DataBind();
}
présument maintenant que je regarde cette page, et un autre utilisateur a venir et apporté quelques modifications aux données sous-jacentes, et je vais maintenant et cliquez sur le bouton Modifier pour modifier D ...
La méthode d'édition est assez simple:
protected void RowEdit(object sender, GridViewEditEventArgs e) {
gridView.EditIndex = e.NewEditIndex;
BindGridSecond();
}
Edit: Je me sens obligé de souligner, que cette méthode est utilisée dans à peu près tous les exemples en ligne, y compris ceux de Microsoft.
Cette méthode BindGridSecond() ressemble à ceci:
private void BindGridSecond() {
var data = new List<string>() {
"A", "AA", "B","C","D","E","F"
};
gridView.DataSource = data;
gridView.DataBind();
}
Il est exactement la même, mais les données sont maintenant changé. Une fois les mises à jour de l'interface utilisateur, l'utilisateur est maintenant en mode édition par rapport à la ligne C.
Pas ce que l'utilisateur attendait ou voulait. Comment ce scénario devrait-il être géré pour éviter un tel problème?