Ich baue einen webbasierten Datenbrowser namens Mavgo Flight. Ich möchte, dass große Tabellen in SQLite kontinuierlich gedruckt werden, anstatt standardmäßig nur zu drucken, wenn alle Daten verfügbar sind. Ich habe versucht, die Vorlage pro Datenzeile auszuführen, aber es ist fehlgeschlagen.
func renderHTMLTable(w http.ResponseWriter, result *sqlx.Rows) { cols, err := result.Columns() if err != nil { log.Println(err, "renderHTMLTable") return } tmpl, err := template.ParseFiles("./templates/2d.html") if err != nil { log.Println("template failed", err) return } data := HTMLTable{} data.Cols = cols for result.Next() { cols, err := result.SliceScan() if err != nil { log.Println(w, err) break } s := make([]string, len(cols)) for i, v := range cols { s[i] = fmt.Sprint(v) } tmpl.Execute(w, s) } }
Ich habe es aufgegeben, schlau zu sein und habe genau das getan, was Cerise vorgeschlagen hat Funktion zum inkrementellen Schreiben von Zeilen:
func renderHTMLTable(w http.ResponseWriter, result *sqlx.Rows) { cols, err := result.Columns() if err != nil { log.Println(err, "renderHTMLTable") return } head, err := template.ParseFiles("./templates/head.html") if err != nil { log.Println("template failed", err) return } row, err := template.ParseFiles("./templates/row.html") if err != nil { log.Println("template failed", err) return } foot := ` </tbody> </table> </div> </body> </html>` head.Execute(w, cols) s := make([]string, len(cols)) for result.Next() { values, err := result.SliceScan() if err != nil { log.Println(w, err) break } for i, v := range values { s[i] = fmt.Sprint(v) } row.Execute(w, s) } fmt.Fprint(w, foot)
}
Das obige ist der detaillierte Inhalt vonSo schreiben Sie schrittweise eine HTML-Vorlage in Go. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!