Il y a beaucoup de questions à ce sujet mais je n'ai pas réussi à résoudre mon problème en utilisant les réponses à l'un d'eux (après de nombreuses tentatives ..)VB.net - make Gridview case à cocher mise à jour champ booléen dans la base de données
Je travaille sur vb.net en créant une application web asp.net. J'ai un SqlDataSource et un GridView sur ma page:
<asp:SqlDataSource ID="msgUnread" runat="server"
ConnectionString="<%$ ConnectionStrings:edinsec %>"
SelectCommand="SELECT [msgdate], [email], [name], [message], [readit] FROM [messages]"
UpdateCommand="UPDATE messages SET readit = 'True' WHERE (msgid = @msgid)">
<UpdateParameters>
<asp:Parameter Name="msgid" />
</UpdateParameters>
</asp:SqlDataSource>
<asp:GridView ID="unreadMessages" runat="server" AutoGenerateColumns="False"
BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px"
CellPadding="3" DataSourceID="msgUnread">
<RowStyle ForeColor="#000066" />
<Columns>
<asp:BoundField DataField="msgdate" HeaderText="Date & time"
SortExpression="msgdate" />
<asp:BoundField DataField="email" HeaderText="Email"
SortExpression="email" />
<asp:BoundField DataField="name" HeaderText="Name" SortExpression="name" />
<asp:TemplateField HeaderText="Mark as read" SortExpression="readit">
<%--<EditItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Bind("readit") %>' OnCheckedChange="CheckBox1_CheckedChanged" />
</EditItemTemplate>--%>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Bind("readit") %>' OnCheckChanged="CheckBox1_CheckedChanged" AutoPostBack="true"/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<FooterStyle BackColor="White" ForeColor="#000066" />
<PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
<SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
</asp:GridView>
Le GridView est rempli correctement, avec les cases des valeurs correctement affichées (le « champ readit » est un champ de bits, à savoir booléen). J'essaye d'obtenir le script pour mettre à jour la valeur booléenne dans la base de données quand la case est cliquée. Pour le moment, je ne peux même pas obtenir le script pour réagir à un clic (pas même un MsgBox).
Voici mon CodeBehind:
Public Partial Class enqur
Inherits System.Web.UI.Page
WithEvents CheckBox1 As CheckBox
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
End Sub
Public Sub CheckBox1_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs)
MsgBox("test")
End Sub
End Class
Comme vous pouvez le voir, je jouais avec WithEvents mais cela ne semble pas aider. Dans le code ci-dessus, tout ce que j'essayais d'obtenir était une sorte de réaction au clic d'une case à cocher - mais rien ne se passe (pas d'erreurs non plus).
Je suis assez perplexe. Quelqu'un peut-il aider? Serait très apprécié :)
Merci pour la réponse. Quand j'ajoute que je n'ai toujours pas de commentaires - le MsgBox ne fonctionne pas :( – melat0nin