<?xml version="1.0"?>
<!--
 -  
 -  $Id$
 -
 -  This file is part of the OpenLink Software Virtuoso Open-Source (VOS)
 -  project.
 -  
 -  Copyright (C) 1998-2018 OpenLink Software
 -  
 -  This project is free software; you can redistribute it and/or modify it
 -  under the terms of the GNU General Public License as published by the
 -  Free Software Foundation; only version 2 of the License, dated June 1991.
 -  
 -  This program is distributed in the hope that it will be useful, but
 -  WITHOUT ANY WARRANTY; without even the implied warranty of
 -  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 -  General Public License for more details.
 -  
 -  You should have received a copy of the GNU General Public License along
 -  with this program; if not, write to the Free Software Foundation, Inc.,
 -  51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 -  
 -  
-->
<!--! \brief Editable multi-row data grid based on data-set control
This example will show list of customers from Northwind demo database.
Allows editing, addtion and removal of existing records.
-->
<v:page name="data_set__0" xmlns:v="http://www.openlinksw.com/vspx/">
<html>
  <body>
    <v:error-summary /><br />
      <v:data-set name="ds" sql="select CustomerID, CompanyName, Phone from Demo.demo.Customers" nrows="10" scrollable="1" cursor-type="keyset">
        <v:template name="t1" type="simple">
          <div>
            Action
            <v:label name="l1" value="CustomerID" format="%s" width="80"/>
            <v:label name="l2" value="CompanyName" format="%s" width="80"/>
            <v:label name="l3" value="Phone" format="%s" width="80"/>
          </div>
        </v:template>
        <v:template name="t2" type="repeat">
          <v:template name="t7" type="if-not-exists">
            <div>No rows selected</div>
          </v:template>
          <v:template name="t5" type="edit">
            <v:form name="u1" type="update" table="Demo.demo.Customers" if-not-exists="insert">
              <v:key column="CustomerID" value="--self.ds.ds_current_row.te_rowset[0]" default="null"/>
              <v:template name="template6" type="simple">
                <div>
                  <v:button name="upd_button" action="submit" value="Update"/>
                  <input type="submit" name="ds_cancel" value="Cancel"/>
                  <v:text name="c_id1" column="CustomerID"/>
                  <v:text name="c_name1" column="CompanyName"/>
                  <v:text name="c_phone1" column="Phone"/>
                </div>
              </v:template>
            </v:form>
          </v:template>
          <v:template name="t8" type="add">
            <v:form name="a1" type="update" table="Demo.demo.Customers" if-not-exists="insert">
              <v:key column="CustomerID" value="--''" default="null"/>
              <v:template name="template9" type="simple">
                <div>
                  <v:button name="add_button" action="submit" value="Add"/>
                  <v:text name="c_id2" column="CustomerID"/>
                  <v:text name="c_name2" column="CompanyName"/>
                  <v:text name="c_phone2" column="Phone"/>
                </div>
              </v:template>
            </v:form>
          </v:template>
          <v:template name="t4" type="browse">
            <div>
              <v:button name="ds_edit" action="simple" value="Edit"/>
              <v:button name="ds_delete" action="simple" value="Delete">
		<v:on-post>
		      declare exit handler for sqlstate '*' {
		      self.vc_is_valid := 0;
		      self.ds.vc_error_message := __SQL_MESSAGE;
		      return;
		      };
                      delete from Demo.demo.Customers where CustomerID = self.ds.ds_current_row.te_rowset[0];
                      self.ds.vc_data_bind(e);
                    </v:on-post>
              </v:button>
              <v:label name="l5" value="--(control.vc_parent as vspx_row_template).te_rowset[0]"/>
              <v:label name="l6" value="--(control.vc_parent as vspx_row_template).te_rowset[1]"/>
              <v:label name="l7" value="--(control.vc_parent as vspx_row_template).te_rowset[2]"/>
            </div>
          </v:template>
        </v:template>
        <v:template name="t3" type="simple">
          <div>
            <v:button name="ds_prev" action="simple" value="&lt;&lt;"/>
            <v:button name="ds_next" action="simple" value="&gt;&gt;"/>
          </div>
        </v:template>
      </v:data-set>
  </body>
</html>
</v:page>
