Bnj,
si on prend en compte que l'id de ton checkbox est cbPublished :
Dans ton GridView, tu peux ajouter l'event RowCreated et dans le code behind, assigner pour chaque checkbox un EventHandler comme suite :
1 2 3 4 5 6 7
| protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
CheckBox cbPublished = (CheckBox)e.Row.FindControl("cbPublished");
if (cbPublished != null)
cbPublished.CheckedChanged += new EventHandler(cbPublished_CheckedChanged);
} |
PS : l'event handler cbPublished_CheckedChanged ici et comme le tien "CheckBoxPublished_CheckedChanged"
Maintenant, pour l'évenement en question, tu peux récupérer l'id de la ligne dont tu veux faire la mise à jour, appeler la méthode de mise à jour ou faire d'autre traitements pour cette ligne :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| private void cbPublished_CheckedChanged(object sender, EventArgs e)
{
CheckBox cbPublished;
string Message = string.Empty ;
foreach (GridViewRow r in GridView1.Rows)
{
cbPublished = (CheckBox)r.FindControl("cbPublished");
if (cbPublished.Checked)
//faire des traitements, comme récupérer un id ou appeler une fonction de mise à jour
Message = String.Format(@"Id sélectionné: {0}",
((Label)r.FindControl("TonId")).Text);
}
//juste pour exemple
Response.Write(Message);
} |
TonId dans cet exemple est un label, qui affiche l'id de l'elément courant (la ligne) :
1 2 3 4 5
| <asp:TemplateField>
<ItemTemplate>
<asp:Label ID="TonId" runat="server" Text='<%# Eval("ID_WF") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField> |
et n'oublie pas d'activer l'AutoPostBack pour le checkbox en question pour qu'il rafraiche la page :
<asp:CheckBox ID="cbPublished" runat="server" AutoPostBack="true" ...
NB : ci à tester
Partager