TableView-Inhalte auslesen

BusinessServerPages; Erstellung von Webapplikationen.

TableView-Inhalte auslesen

Postby Meliha2595 » Thu May 04, 2006 9:52 am

Hallöchen,
ich bins mal wieder mit ner tollen Frage.

Ich hab jetzt hier schon etliche Threads durchgeschaut und hab auch die Tips daraus so gut wie möglich umgesetzt, aber ich stehe im Grunde immer noch da, wo ich am Anfang stand: ich möchte den Zelleninhalt aus einem Tableview auslesen.

Klar, ganz easy, mag man sagen, machst einfach
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. DATA: tv TYPE REF TO cl_htmlb_tableview.
  2. DATA: tv_data TYPE REF TO cl_htmlb_event_tableview.
  3. DATA: string1 TYPE string.
  4.  
  5. tv ?= CL_HTMLB_MANAGER=>GET_DATA( request = runtime->server->request
  6.  
  7. name    = 'tableView'
  8.                                                id      = tv_event->id
  9.                                               ).
  10.  
  11. tv_data = tv->data.
  12. tv_data TYPE REF TO cl_htmlb_tableview.
  13. string1 = tv_data->get_cell_value ( row_index = row column_index = col ).
  14.  
GeSHi ©


Geht aber nicht. Warum? Die Methode get_cell_value liefert einen leeren String aus der gefüllten Tabelle zurück.

Dann gibts da noch über den CL_HTMLB_MANAGER eine schöne Methode namens get_table_cell_value, die aber leider "deprecated", sprich veraltet und damit deaktiviert ist.

Überhaupt ist so ziemlich alles, was die Zellen einer TableView angeht entweder deprecated oder nur mit Rückgabewerten versehen, die mich nicht interessieren (z.B. die ID einer Zelle, wenn ich doch den Value suche).

Die Klasse CL_HTMLB_TABLEVIEW würde noch eine Methode namens Rendercell anbieten, die, so entnehme ich den Kommentaren, auch die Funktion von get_cell_value über ein Makro nachbildet, aber ich komme an die Methode nicht ran, da sie - ihr dürft dreimal raten, aber ich sags euch gleich - genau, protected ist.

Wie also um alles in der Welt komme ich jetzt an meine Daten ran, die in der TableView dargestellt werden? Please help!
Meliha2595
.
.
 
Posts: 7
Joined: Mon Mar 27, 2006 11:56 am

Postby Logan2437 » Thu May 04, 2006 11:06 am

1. Frage: Wo hast du "row" und "col" gefüllt ?
2. Frage: In welchem Event Receiver ?

Bei mir funktioniert das im OnInputProcesing, allerdings steht bei mir:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. loop at tv_data->allcolumnnames into feld.
  2. value = tv_data->get_cell_value(
  3.                         row_index = tv_data->prevselectedrowindex
  4.                      column_index = sy-tabix ).
  5.  
GeSHi ©
Logan2437
...
...
 
Posts: 169
Joined: Wed Jun 23, 2004 3:52 pm

Postby Meliha2595 » Thu May 04, 2006 11:50 am

row und col in meinem geposteten Beispiel sind nur Platzhalter. Normalerweise steht das in meinem Code so da. Der EventReceiver ist onInputProcessing.

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. FIELD-SYMBOLS: <row> TYPE ANY,
  2.                <col> TYPE ANY.
  3.  
  4. ...
  5.  
  6. ASSIGN tv_data->row_index TO <row>.
  7. ASSIGN tv_data->column_index TO <col>.
  8. string1 = tv_data->get_cell_value&#40; row_index = <row> column_index = <col> &#41;.
  9.  
GeSHi ©


Die Variable string1 bleibt aber leer, obwohl die Zelle im Tableview an der angegebenen Stelle gefüllt ist. :shock: :?

Wird denn bei dir mit der Methode get_cell_value ein Wert zurückgegeben?

Interessanterweise hatte nämlich schonmal jemand mit der Methode get_cell_value dasselbe Problem wie ich, doch leider hat ihm dann keiner mehr geantwortet ... :(
Meliha2595
.
.
 
Posts: 7
Joined: Mon Mar 27, 2006 11:56 am

Postby Meliha2595 » Thu May 04, 2006 3:52 pm

So, hab jetzt herausgefunden, warum die Variable string1 im oben genannten Beispiel leer bleibt. Es lag an folgendem:

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. <htmlb:tableViewColumn columnName = "<%= gs_felder-feldwert %>"
  2.                        width      = "<%= gs_felder-feld_breite %>"        
  3.                        type       = "TEXT" <-- !!!
  4.                        edit       = "<%= <editable> %" >                                </htmlb:tableViewColumn>
  5.  
GeSHi ©


Wenn ich es folgendermaßen löse, komme ich auch an die Daten ran:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. <htmlb:tableViewColumn columnName = "<%= gs_felder-feldwert %>"
  2.                        width      = "<%= gs_felder-feld_breite %>"
  3.                        type       = "INPUT"
  4.                        edit       = "<%= <editable>  %>">
  5. </htmlb:tableViewColumn>
  6.  
GeSHi ©


Allerdings - und das bereitet mir jetzt wieder Kopfzerbrechen - ist damit das edit-Flag nutzlos. Egal was ich als Wert übergebe, es bleibt editierbar. Aber das ist nicht Sinn und Zweck der Sache, wenn bestimmte Werte nur angezeigt, aber nicht geändert werden dürfen.

Hat in dem Zusammenhang jemand von euch bereits eine Lösung gefunden? Ich probier schon die ganze Zeit, wie gesagt, doch leider ohne nennenswerten Erfolg.
Meliha2595
.
.
 
Posts: 7
Joined: Mon Mar 27, 2006 11:56 am

_edit_

Postby Levent866 » Fri Jun 30, 2006 2:46 pm

wollte nur noch ma hinzufügen das ich die komplette Tabelle einlesen möchte und nicht nur bestimmte Felder...

zur Zeit hab ich mein OnInputProcessing folgendermaßen nach ein paar Gedankenstützen aus diesem Thread http://bb1.gate2app.com/viewtopic.php?t=19956
gestaltet:

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. DATA: tv TYPE REF TO cl_htmlb_tableview.
  2. DATA: tv_data TYPE REF TO cl_htmlb_event_tableview.
  3. DATA: string1 TYPE string.
  4.  
  5. FIELD-SYMBOLS: <row> TYPE ANY,
  6.                <col> TYPE ANY.
  7.  
  8. tv ?= CL_HTMLB_MANAGER=>GET_DATA(
  9. request = runtime->server->request
  10. name    = &#146;tableView&#146;
  11. id      = tv_event->id ).
  12.  
  13. tv_data = tv->data.
  14. tv_data TYPE REF TO cl_htmlb_tableview.
  15.  
  16. ASSIGN tv_data->row_index TO <row>.
  17. ASSIGN tv_data->column_index TO <col>.
  18.  
  19. string1 = tv_data->get_cell_value(
  20.    row_index = <row> column_index = <col> )
  21.  
GeSHi ©
Für die Definition der Variablen ...

Und für den ButtonEvent hab ich den Button ausgewählt und dann die LOOP Schleife genommen. Aber ich will das ja in eine
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. IF event IS NOT INITIAL
  2. AND event->event_name = &#146;button&#146;
  3. AND event->event_id = &#146;bt_accept&#146;.
  4.  
  5.   LOOP AT tv_data->allcolumnnames INTO LAB_STRUK-felder.
  6.     value = tv_data->get_cell_value(
  7.         row_index    = tv_data->prevselectedrowindex
  8.         column_index = sy-tabix ).
  9.   ENDLOOP.
  10.  
GeSHi ©
Aber mit den LOOPs hab ich noch so meine Problemchen. Jedes Feld zeilenweise zu lesen und in eine Struktur schreiben
Levent866
.
.
 
Posts: 5
Joined: Thu Jun 29, 2006 2:14 pm


Return to BSP + BHTML

Who is online

Users browsing this forum: No registered users and 2 guests