En cliquant sur la case causes onCheckedChanged à feu à deux reprises

J'ai un GridView avec un TemplateField avec une case à cocher. Mon objectif est de capturer l'événement onclick l'aide de autopostback et la définition d'une base de données drapeau. Mon seul problème est que l'événement se déclenche deux fois. La première fois que la Case (Dans le paramètre sender) détient les cliqué valeur alors je l'ai mis en fonction sur le clic. La deuxième fois, le paramètre sender a une case à cocher qui est toujours vérifié=false. Je suis heureuse de vous divertir suggestions sur d'autres approché pour la résolution de ce problème, mais mon objectif est de définir une base de données basée sur l'indicateur sur l'utilisateur en cochant une case. Je suis ciblage .NET Framework 2.0.

Voici le code associé:

<div style="margin-left : 1em;margin-right:1em;">
    <asp:GridView ID="RouteGridView" runat="server" AllowPaging="True" 
            AutoGenerateColumns="False" CellPadding="4" DataKeyNames="ROUTE_NUMBER" 
            ForeColor="#333333" GridLines="None" style="width:100%;" 
        onselectedindexchanged="RouteGridView_SelectedIndexChanged" 
        AllowSorting="True" onpageindexchanging="RouteGridView_PageIndexChanging" 
        onsorting="RouteGridView_Sorting" >
            <Columns>
<%-- Column one --%>
<asp:TemplateField HeaderText="Route" SortExpression="ROUTE_NUMBER">
    <ItemTemplate>
        <asp:LinkButton ID="HyperLink1" runat="server" CommandName="Select" CommandArgument='<%#Eval("ROUTE_NUMBER")%>'  
                            Text='<%# Eval("ROUTE_NUMBER") %>' ></asp:LinkButton>
    </ItemTemplate>
    <ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>

<%-- Column 2 this is where the problem CheckBox is--%>
<asp:TemplateField HeaderText="Read?" 
    SortExpression="READ_FLAG">
    <ItemTemplate>
        <asp:CheckBox ID="CheckBox1" runat="server" 
            OnCheckedChanged="ChangeReadFlag"  
            AutoPostBack="true"
            Checked='<%# (string)DataBinder.Eval(Container.DataItem, "READ_FLAG") == "1" %>' Enabled='<%# isSelectedRow(Container)  %>' />
    </ItemTemplate>
    <ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>

<%-- more columns --%
<%-- more columns --%>
</Columns>
</asp:GridView>

Ici est le gestionnaire d'événement dans le code-behind:

protected void ChangeReadFlag(object sender, EventArgs e)
{
    if (RouteGridView.SelectedIndex != -1)
    {
        CheckBox cb = ((CheckBox)sender);
        DataKey key = RouteGridView.SelectedDataKey;

        //... do stuff here ...
    }
}
  • Vous pourriez avoir à publier plus de votre code pour obtenir une réponse
  • Cela peut être sans rapport, mais il y a un bug dans le navigateur, si un <img> tag ne spécifie pas de src. puis deux requêtes sont faites
InformationsquelleAutor minty | 2008-12-18