RowIndex eines Gridview beim TextChangeEvent einer Textbox in einem Templatefield auslesen

  • VB.NET

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von milaim.

    RowIndex eines Gridview beim TextChangeEvent einer Textbox in einem Templatefield auslesen

    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 des bearbeiteten Teils 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. Danach wird das Gridview wieder an die ObjectDataSource gebunden, um die Ansicht zu aktualisieren.

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


    Hier mal mein GridViewCode. ich hab bis jetzt nur ein Textfeld eingebaut, um es übersichtlich zu halten.

    VB.NET-Quellcode

    1. <asp:GridView ID="gv_MRFSingle" runat="server" AutoGenerateColumns="False"
    2. CellPadding="4" DataKeyNames="MRF_ID" DataSourceID="DS_MRFActual"
    3. ForeColor="#333333" GridLines="None">
    4. <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
    5. <Columns>
    6. <asp:TemplateField HeaderText="Datum Test">
    7. <ItemTemplate>
    8. <asp:TextBox ID="txtBox_DateTest" runat="server"
    9. ontextchanged="txtBox_DateTest_TextChanged"
    10. Text='<%# Bind("MRF_DateTest", "{0:d}") %>' AutoPostBack="True"></asp:TextBox>
    11. </ItemTemplate>
    12. </asp:TemplateField>
    13. <asp:BoundField DataField="MRF_ID" HeaderText="MRF_ID" InsertVisible="False"
    14. ReadOnly="True" SortExpression="MRF_ID" />
    15. <asp:BoundField DataField="MRF_DateAssembly" HeaderText="MRF_DateAssembly"
    16. SortExpression="MRF_DateAssembly" />
    17. <asp:BoundField DataField="MRF_DateTest" HeaderText="MRF_DateTest"
    18. SortExpression="MRF_DateTest" />
    19. <asp:BoundField DataField="MRF_DateShipment" HeaderText="MRF_DateShipment"
    20. SortExpression="MRF_DateShipment" />
    21. <asp:CheckBoxField DataField="MRF_IsTested" HeaderText="MRF_IsTested"
    22. SortExpression="MRF_IsTested" />
    23. <asp:CheckBoxField DataField="MRF_IsDamaged" HeaderText="MRF_IsDamaged"
    24. SortExpression="MRF_IsDamaged" />
    25. <asp:CheckBoxField DataField="MRF_IsShipped" HeaderText="MRF_IsShipped"
    26. SortExpression="MRF_IsShipped" />
    27. <asp:BoundField DataField="MRF_Remarks" HeaderText="MRF_Remarks"
    28. SortExpression="MRF_Remarks" />
    29. <asp:BoundField DataField="MRF_SN" HeaderText="MRF_SN"
    30. SortExpression="MRF_SN" />
    31. </Columns>
    32. <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
    33. <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
    34. <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
    35. <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
    36. <EditRowStyle BackColor="#999999" />
    37. <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
    38. </asp:GridView>



    Danke schon mal und noch einen schönen Tag.
    Torsten
    hey, auswendig weiss ichs leider nicht, wie ein automatischer Update geht, da ich Visual studio grad nicht da hab, aber ich hätte da ne andere mögliche Lösung für dich. Wäre auch meiner Meinung nach keine schlechte Idee:
    Wenn du ein Feld bearbeitet hast, soll die ganze zeile, in dem das Feld bearbeitet wurde, eine rötliche Farbe bekommen. Wenn du alles bearbeitet hast, soll ein Button dann die ganzen veränderten (rötlich markierten) Zeilen in der Datenbank verändern und neu anzeigen. Das wär doch ganz schick... Dann hast du auch ein Überblick, was da wirklich bearbeitet werden soll und so. Wenn du aber bis nachher immernoch keine Hilfe hast, werde ich mich mal ransetzen und dir weiterhelfen, wenn ich wieder an meinem Notebook sitze.
    (Ich hasse Notebooks ohne Entwicklungsumgebungen lol)
    "Wenn jemand in einem Betrieb unverzichtbar ist, dann ist dieser Betrieb falsch organisiert." - Roberto Niederer