Visual Basic Forum

Visual Basic Forum
für VB6 und VB.NET Programmierer
 
RegistrierenRegistrieren  LoginLogin

Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB.NET] Fragen - Antworten
Autor
Nachricht
Tiekey
Newbie
Newbie

Anmeldedatum: 09.02.2010
Beiträge: 2

RowIndex/ID bei TextchangeEvent einer Textbox in Gridview
Verfasst am: 09.02.2010, 07:29

Hallo zusammen,

ein GridView ist schon ne feine Sache. Leider kann es jedoch ein Endlosformular, wie es das in Access gibt, nicht so ohne weiteres nachbilden. Für alle die sich nicht so mit Access auskennen: im Prinzip ist ein Endlosformular ein Gridview. Nur mit dem kleinen feinen Unterschied das alle Daten (die vom Programmierer freigegeben sind) bearbeitet werden können, ohne vorher einen Button "Edit" oder "Bearbeiten" klicken zu müssen.

So etwas möchte ich auch in meiner Webform umsetzen. Mein Gridview ist an eine ObjectDataSource gebunden. Ich habe mehrere Datumsfelder und einige BitFelder (true/false) in meiner MSSQL Datenbank. Ziel ist es, das Gridview so zu konfigurieren, dass ich für die Datumsfelder und die BitFelder jeweils bearbeitbare Textboxen und Checkboxen habe, die ich bearbeite. Nach jeder Änderung soll die Änderung in die Datenbank geschrieben werden. Ich weiss, dass ich jede einzelne Zeile durch besagte EditButtons in den Bearbeitungsmodus setzen kann und dann über die ObjectDataSource-eigene Update Methode die Daten in die Datenbank eintragen kann. Aber ich will unnötige Klicks verhindern. Es soll eigentlich wie in Access oder auch wie ein Excelsheet sein. Jede Zelle ist frei bearbeitbar und wird gleich nach Bearbeitung abgespeichert.

Logisch in meinen Augen wäre, über das TextChangeEvent der bearbeiteten Textbox den Rowindex und die zugehörige ID/DataKey ("MRF_ID") des bearbeiteten Produkts abzurufen. Über den RowIndex kann ich die Textbox in dieser Zeile suchen und deren geänderten Inhalt auslesen. Und über die ID kann ich einen SQLUpdateBefehl an meine Datenbank schicken.

Hat jemand eine Ahnung wie ich den RowIndex und den Zugehörigen ID Wert aus meiner Webanwendung herauskitzle?

Hier mal der Code von meinem Gridview. Ich habe der Übersicht halber erst mal nur eine Textbox in eingebaut.

Code:

        <asp:GridView ID="gv_MRFSingle" runat="server" AutoGenerateColumns="False"
            DataKeyNames="MRF_ID" DataSourceID="DS_MRFActual"
            OnRowCommand="gvMRFSingle_RowCommand">
            <Columns>
                <asp:TemplateField HeaderText="Datum Test">
                    <ItemTemplate>
                        <asp:TextBox ID="txtBox_DateTest" runat="server"
                            ontextchanged="txtBox_DateTest_TextChanged"
                            Text='<%# Bind("MRF_DateTest", "{0:d}") %>' AutoPostBack="True"></asp:TextBox>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="MRF_ID" HeaderText="MRF_ID" InsertVisible="False"
                    ReadOnly="True" SortExpression="MRF_ID" />
                <asp:BoundField DataField="MRF_SpecID" HeaderText="MRF_SpecID"
                    SortExpression="MRF_SpecID" />
                <asp:BoundField DataField="MRF_FiberID" HeaderText="MRF_FiberID"
                    SortExpression="MRF_FiberID" />
                <asp:BoundField DataField="MRF_IOID" HeaderText="MRF_IOID"
                    SortExpression="MRF_IOID" />
                <asp:BoundField DataField="MRF_OperatorID" HeaderText="MRF_OperatorID"
                    SortExpression="MRF_OperatorID" />
                <asp:BoundField DataField="MRF_DateAssembly" HeaderText="MRF_DateAssembly"
                    SortExpression="MRF_DateAssembly" />
                <asp:BoundField DataField="MRF_DateTest" HeaderText="MRF_DateTest"
                    SortExpression="MRF_DateTest" />
                <asp:BoundField DataField="MRF_DateShipment" HeaderText="MRF_DateShipment"
                    SortExpression="MRF_DateShipment" />
                <asp:CheckBoxField DataField="MRF_IsTested" HeaderText="MRF_IsTested"
                    SortExpression="MRF_IsTested" />
                <asp:CheckBoxField DataField="MRF_IsDamaged" HeaderText="MRF_IsDamaged"
                    SortExpression="MRF_IsDamaged" />
                <asp:CheckBoxField DataField="MRF_IsShipped" HeaderText="MRF_IsShipped"
                    SortExpression="MRF_IsShipped" />
                <asp:BoundField DataField="MRF_Remarks" HeaderText="MRF_Remarks"
                    SortExpression="MRF_Remarks" />
                <asp:BoundField DataField="MRF_SN" HeaderText="MRF_SN"
                    SortExpression="MRF_SN" />
            </Columns>
        </asp:GridView>
       
        <asp:ObjectDataSource ID="DS_MRFActual" runat="server"
            DeleteMethod="Delete" InsertMethod="Insert"
            OldValuesParameterFormatString="original_{0}" SelectMethod="GetActuelNewMRF"
            TypeName="MRF_DatasetTableAdapters.MRF_SingleTableAdapter"
            UpdateMethod="Update">
            <DeleteParameters>
                <asp:Parameter Name="Original_MRF_ID" Type="Int32" />
            </DeleteParameters>
            <UpdateParameters>
                <asp:Parameter Name="MRF_SN" Type="String" />
                <asp:Parameter Name="MRF_SpecID" Type="Int32" />
                <asp:Parameter Name="MRF_FiberID" Type="Int32" />
                <asp:Parameter Name="MRF_IOID" Type="Int32" />
                <asp:Parameter Name="MRF_OperatorID" Type="Int32" />
                <asp:Parameter Name="MRF_DateAssembly" Type="DateTime" />
                <asp:Parameter Name="MRF_DateTest" Type="DateTime" />
                <asp:Parameter Name="MRF_DateShipment" Type="DateTime" />
                <asp:Parameter Name="MRF_IsTested" Type="Boolean" />
                <asp:Parameter Name="MRF_IsDamaged" Type="Boolean" />
                <asp:Parameter Name="MRF_IsShipped" Type="Boolean" />
                <asp:Parameter Name="MRF_Remarks" Type="String" />
                <asp:Parameter Name="Original_MRF_ID" Type="Int32" />
            </UpdateParameters>
            <InsertParameters>
                <asp:Parameter Name="MRF_SN" Type="String" />
                <asp:Parameter Name="MRF_SpecID" Type="Int32" />
                <asp:Parameter Name="MRF_FiberID" Type="Int32" />
                <asp:Parameter Name="MRF_IOID" Type="Int32" />
                <asp:Parameter Name="MRF_OperatorID" Type="Int32" />
                <asp:Parameter Name="MRF_DateAssembly" Type="DateTime" />
                <asp:Parameter Name="MRF_DateTest" Type="DateTime" />
                <asp:Parameter Name="MRF_DateShipment" Type="DateTime" />
                <asp:Parameter Name="MRF_IsTested" Type="Boolean" />
                <asp:Parameter Name="MRF_IsDamaged" Type="Boolean" />
                <asp:Parameter Name="MRF_IsShipped" Type="Boolean" />
                <asp:Parameter Name="MRF_Remarks" Type="String" />
            </InsertParameters>
        </asp:ObjectDataSource>


Danke und Gruß
Torsten
_________________
 
Tiekey
Newbie
Newbie

Anmeldedatum: 09.02.2010
Beiträge: 2

Erledigt
Verfasst am: 15.02.2010, 14:30

Hallo zusammen,

nach langer Suche bin ich jetzt auf die Lösung gestoßen. Der Artikel "Sofortiges Datenbankupdate mit dem Gridview-Control" , in dem die Vorgehensweise beschrieben steht, ist unter folgendem Link zu finden: http://www.devtrain.de/news.aspx?artnr=1004.

Auf meinen Code angewendet sieht das folgender Maßen aus:

Code:
 
Protected Sub txtBox_TestDate_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim TB As TextBox = DirectCast(sender, TextBox)
        Dim grd As GridView = TB.NamingContainer.NamingContainer
        Dim MRFID As Integer = grd.DataKeys(DirectCast(TB.NamingContainer, GridViewRow).DataItemIndex).Value
        Dim conn As New SqlConnection
        conn = GetConnectionMRF()
        Dim cmd As New SqlCommand("Update MRF_Single SET MRF_DateTest= CONVERT(DATETIME, @TestDate, 104) Where MRF_ID=@MRFID", conn)
        cmd.Parameters.AddWithValue("@TestDate", TB.Text)
        cmd.Parameters.AddWithValue("@MRFID", MRFID)
        conn.Open()
        cmd.ExecuteNonQuery()
        conn.Close()
        cmd.Dispose()
        conn.Dispose()
        Page.DataBind()
    End Sub



Viel Erfolg beim Anwenden.

Gruß
Torsten
 
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB.NET] Fragen - Antworten

Tags: gridview, textbox, auslesen, zeile

 
 Verwandte Themen   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Button/Text 866 18.06.2009, 15:21
Keine neuen Beiträge E-Mail bekomm nach Button klicken 661 02.10.2007, 16:45
Keine neuen Beiträge Bestimmten "Button" auf Website klicken 1533 14.09.2007, 20:27
Keine neuen Beiträge webbrowser/ webformular button klicken 1532 23.07.2007, 22:07
Keine neuen Beiträge Button drücken.. 737 01.07.2007, 12:19
 



[ Time: 0.1746s ][ Queries: 87 (0.0265s) ][ GZIP on - Debug on ]