adamc@915: open Dbgrid adamc@915: adamc@915: table t1 : {Id : int, A : string} adamc@915: PRIMARY KEY Id adamc@915: adamc@915: sequence s adamc@931: table t : {Id : int, A : int, B : string, C : bool, D : int, E : option int, F : option int} adamc@915: PRIMARY KEY Id, adamc@915: CONSTRAINT Foreign FOREIGN KEY (D) REFERENCES t1(Id) ON DELETE CASCADE adamc@915: adamc@932: fun page (n, s) = return A = {[n]}, B = {[s]} adamc@915: adamc@915: open Make(struct adamc@915: val tab = t adamc@915: con key = [Id = _] adamc@915: adamc@915: val raw = {Id = {New = nextval s, adamc@915: Inj = _}, adamc@915: A = {New = return 0, adamc@915: Inj = _}, adamc@915: B = {New = return "", adamc@915: Inj = _}, adamc@915: C = {New = return False, adamc@915: Inj = _}, adamc@915: D = {New = return 0, adamc@930: Inj = _}, adamc@930: E = {New = return None, adamc@931: Inj = _}, adamc@931: F = {New = return None, adamc@915: Inj = _}} adamc@915: adamc@915: structure F = Direct.Foreign(struct adamc@915: con nm = #Id adamc@915: val tab = t1 adamc@915: fun render r = r.A adamc@915: end) adamc@915: adamc@915: val cols = {Id = Direct.readOnly [#Id] ! "Id" Direct.int, adamc@932: A = Direct.editable [#A] ! "A" Direct.int, adamc@915: B = Direct.editable [#B] ! "B" Direct.string, adamc@931: C = Direct.editable [#C] ! "C" Direct.bool, adamc@932: D = Direct.editable [#D] ! "D" F.meta, adamc@930: E = Direct.editable [#E] ! "E" (Direct.nullable Direct.int), adamc@932: F = Direct.editable [#F] ! "F" (Direct.nullable F.meta), adamc@915: DA = computed "2A" (fn r => 2 * r.A), adamc@932: Link = computedHtml "Link" (fn r => Go)} adamc@935: adamc@937: val aggregates = {Dummy1 = {Initial = (), adamc@937: Step = fn _ _ => (), adamc@937: Display = fn _ => }, adamc@937: Sum = {Initial = 0, adamc@937: Step = fn r n => r.A + n, adamc@937: Display = txt}, adamc@937: Dummy2 = {Initial = (), adamc@937: Step = fn _ _ => (), adamc@940: Display = fn _ => }, adamc@937: And = {Initial = True, adamc@937: Step = fn r b => r.C && b, adamc@937: Display = txt}} adamc@915: end) adamc@915: adamc@915: fun main () = adamc@915: grid <- grid; adamc@940: set (showSelection grid) True; adamc@915: return adamc@915: adamc@923: adamc@915: adamc@915: adamc@915: {render grid} adamc@940:
adamc@940: Selection: {[r.Id]}; ) ls)}/> adamc@915: adamc@915: