auf einem ASP Gridview SQL-Server-Basis Abfrage aktualisiert.Checkbox ItemTemplate nicht in ein ASP GridView
<asp:Content ID="i_cttContenu" runat="server" ContentPlaceHolderID="i_cphContenu">
<asp:SqlDataSource ID="i_sdsGvOption" runat="server" ConnectionString="<%$ ConnectionStrings:... %>"
SelectCommand=" SELECT * FROM MyTable " SelectCommandType="Text"
UpdateCommand="UPDATE MyTable SET [name] = @name, prenom = @prenom, isAlive = @isAlive WHERE idWsgProgramOption = @idWsgProgramOption" UpdateCommandType="Text"
</asp:SqlDataSource>
<asp:UpdatePanel ID="i_up" runat="server">
<ContentTemplate>
<asp:GridView ID="i_gvOption" runat="server" AutoGenerateColumns="False" DataKeyNames="idWsgProgramOption"
DataSourceID="i_sdsGvOption" EnableModelValidation="True">
<Columns>
<asp:CommandField ButtonType="Image" CancelImageUrl="~/....gif"
CancelText="Annuler" EditImageUrl="~/....gif"
EditText="Update" HeaderText="M" UpdateImageUrl="~/....gif"
UpdateText="Save">
</asp:CommandField>
<asp:TemplateField HeaderText="Nom" SortExpression="name">
<ItemTemplate>
<asp:HyperLink ID="i_hlOption" runat="server" NavigateUrl='<%# Eval("idWsgProgramOption", "~/myURL") %>'
Text='<%# Eval("name") %>' />
</ItemTemplate>
<EditItemTemplate>
<table >
<tr>
<td >
<asp:TextBox ID="i_tbNom" runat="server" Text='<%# Bind("name") %>' />
</td>
</tr>
</table>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="prenom" SortExpression="prenom">
<ItemTemplate>
<asp:HyperLink ID="i_hlprenom" runat="server" NavigateUrl='<%# Eval("prenom", "~/myURL") %>'
Text='<%# Eval("prenom") %>' />
</ItemTemplate>
<EditItemTemplate>
<table >
<tr>
<td >
<asp:TextBox ID="i_tbprenom" runat="server" Text='<%# Bind("prenom") %>' />
</td>
</tr>
</table>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Obligatoire" >
<ItemTemplate>
<asp:CheckBox ID="CB_id1" runat="server" />
</ItemTemplate>
<EditItemTemplate>
<asp:CheckBox ID="CB_id2" runat="server" />
</EditItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
</asp:Content>
Die update() -Methode wird nicht aufgerufen, wenn ich auf die Schaltfläche zum Aktualisieren (erste Spalte) klicke. Wenn ich ein OnUpdating-Ereignis in die Datenquelle hinzufüge, wird die entsprechende Methode nie aufgerufen.
Der Code, der das Problem verursacht, ist definitiv das Kontrollkästchen. Wenn ich von der Datenquelle Update-Abfrage zu entfernen: , IsAlive = @isAlive und nur dann gesetzt:
UPDATE MyTable SET [name] = @name, prenom = @prenom, isAlive = @isAlive WHERE idWsgProgramOption = @idWsgProgramOption;
Dann aktualisiert er in Ordnung (mit Ausnahme des IsAlive Feld natürlich). Ich bin 100% sicher, dass das isAlive-Feld in der Basis (Bit-Typ) existiert.
So sieht es aus, dass mein Problem aus diesem Block kommt:
<asp:TemplateField HeaderText="Obligatoire" >
<ItemTemplate>
<asp:CheckBox ID="CB_id1" runat="server" />
</ItemTemplate>
<EditItemTemplate>
<asp:CheckBox ID="CB_id2" runat="server" />
</EditItemTemplate>
</asp:TemplateField>
Gibt es verpasst etwas offensichtlich, dass ich ??
Dies ist auch der vereinfachte Code, aber wenn ich die "checked" -Eigenschaft auf das Kontrollkästchen gesetzt und korrekt bindet, ist das Kontrollkästchen Zeilen korrekt Feld. Das Problem betrifft also nicht die Auswahl, sondern nur die Aktualisierung.
Sie müssen das isAlive-Feld an ein GridView 'CheckBoxField' binden, Sie können es in ein Template-Feld konvertieren, nachdem Sie es verdrahtet haben, wenn Sie müssen. Außerdem würde ich vorschlagen, das UpdatePanel zu entfernen, bis alles funktioniert. – fnostro