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.
Danke schon mal und noch einen schönen Tag.
Torsten
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
- <asp:GridView ID="gv_MRFSingle" runat="server" AutoGenerateColumns="False"
- CellPadding="4" DataKeyNames="MRF_ID" DataSourceID="DS_MRFActual"
- ForeColor="#333333" GridLines="None">
- <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
- <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_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>
- <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
- <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
- <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
- <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
- <EditRowStyle BackColor="#999999" />
- <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
- </asp:GridView>
Danke schon mal und noch einen schönen Tag.
Torsten