DevTrain Startseite Visual Studio 1 Magazin  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren


   Autor: Bernhard Grojer Artikel Drucken
        
Sofortiges Datenbankupdate mit dem Gridview-Control

Manchmal ist es gewünscht, bestimmte Werte in einem Gridview zu ändern, ohne den Umweg über den Edit oder Update Button gehen zu müssen.

Um dies umzusetzen kommen wir um ein paar Zeilen Code nicht rum.
Das Gridview wird ein Template-Field benötigt, durch das ein Postback ausgelöst werden kann. In diesem Fall verwende ich eine Checkbox:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ProductID" DataSourceID="SqlDataSource1">
    <Columns>
        <asp:BoundField DataField="ProductID" HeaderText="ProductID" InsertVisible="False" ReadOnly="True" SortExpression="ProductID" />
        <asp:BoundField DataField="ProductName" HeaderText="ProductName" SortExpression="ProductName" />
        <asp:TemplateField HeaderText="Discontinued" SortExpression="Discontinued">
            <ItemTemplate>
                <asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Bind("Discontinued") %>' AutoPostBack="True" OnCheckedChanged="CheckBox1_CheckedChanged" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" 
    SelectCommand="SELECT [ProductID], [ProductName], [Discontinued] FROM [Products]">
</asp:SqlDataSource>


Im Code wird nun der nötige SQL-Update-Befehl abgesetzt und das Gridview neu gebunden:

    Protected Sub CheckBox1_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim chk As CheckBox = DirectCast(sender, CheckBox)
        Dim grd As GridView = chk.NamingContainer.NamingContainer
        Dim ProductID As Integer = grd.DataKeys(DirectCast(chk.NamingContainer, GridViewRow).DataItemIndex).Value
        Dim conn As New SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings("NorthwindConnectionString").ConnectionString.ToString())
        Dim cmd As New SqlCommand("Update Products SET Discontinued=@Discontinued Where ProductID=@ProductID", conn)
        cmd.Parameters.AddWithValue("@Discontinued", chk.Checked)
        cmd.Parameters.AddWithValue("@ProductID", ProductID)
        conn.Open()
        cmd.ExecuteNonQuery()
        conn.Close()
        cmd.Dispose()
        conn.Dispose()
        Page.DataBind()
    End Sub

Diskutieren Sie in den Foren


DevTrain Camp - Schneller zum .NET 3.5 Developer
 
Verwandte Artikel      Verlinkte Dokumente
    Keine verknüpften Dokumente
    Keine Links vorhanden

  Erfasst am: 29.03.2007
  Gültig bis: 27.06.2007
19 Ratings
Bewertung: 28,4%
schlecht    sehr gut  

 
© Copyright 2007 ppedv AG