How to avoid saving of data if required filed not filled

  1. #1

    How to avoid saving of data if required filed not filled

    HI,

    Can you me out please how to avoid/stop saving of data into database if required fileds data not filled in gridpanel when new row added?
  2. #2
    Hi,

    1. Set AllowBlank="false" for the RecordField
    2. Usee BeforeSave handler like in the following sample

    https://examples1.ext.net/#/GridPanel/Update/AutoSave/
  3. #3

    How to avoid saving of data if required filed not filled

    Quote Originally Posted by Vladimir View Post
    Hi,

    1. Set AllowBlank="false" for the RecordField
    2. Usee BeforeSave handler like in the following sample

    https://examples1.ext.net/#/GridPanel/Update/AutoSave/
    Vladimir,

    Thanks for your reply.
    I implemented your code changes but it is working. Record is getting inserting into the database.

    my requirement is like when click on the Add button am inserting new row in GridPanel and I have editors as textboxes. when i click on the save button am calling "Gridpanel1.save()" method then the record directly saving to the database.

    here is the my code . Can you please help me out on this.




    <%@ Page Language="VB" %>
    
    <%@ Import Namespace="System.Xml" %>
    <%@ Import Namespace="System.Collections.Generic" %>
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
        <title>Ext.NET Example</title>
    
        <script type='text/javascript'>
                
                
                function Editing(e)
                {        
                
                    var isValid = true;
                    e.grid.store.each(function(record)
                    {      
                    alert(record);
                    var value = record.get("Code");  
                    alert(value);
                    // add own validation expression 
                    if(!(/^\d+$/.test(value)))
                    {   
                    isValid = false;     
                    return false;  
                    }  
                    }); 
                    return isValid;
                                                                                                                         
                
                    
                    if(e.column==0)
                    {
                    if(e.value=='')
                        {
                        alert(parseInt(e.column)+1 +' is column empty at  '+ (parseInt(e.row)+1));
                        e.cancel=true;
                        }
                    }
                }
                function AmtPercenteageRender(value)
                {
                
                if(value==="")
                return '';
                else
                {
                value=(value==true)?1:0;
                return cmb1.getStore().data.items[value].data.text;
                }
                }
    
        </script>
    
    </head>
    <body>
        <form id="Form1" runat="server">
        <ext:ResourceManager ID="ResourceManager1" runat="server" Theme="Slate">
        </ext:ResourceManager>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=wizard;Data Source=DRAGRAN"
            SelectCommand="select ID,Code,Description, case when Percentage IS null then 0 else 1 end AmtPercenteage,ISNULL(Amount,Percentage) value,UserOverride,Surcharge,BeforeAgencyDiscount,Taxable,NoteRequired,IsActive from gsContractsCharges "
            InsertCommand="if(@AmtPercenteage =0)  insert into gsContractsCharges(Code,Description, Amount) values(@Code,@Description, @value) else insert into gsContractsCharges(Code,Description, Percentage) values (@Code,@Description, @value)"
            UpdateCommand="if(@AmtPercenteage =0) update gsContractsCharges set Code=@Code, Description= @Description, Amount=@value,Percentage=null where ID=@ID else  update gsContractsCharges set Code=@Code, Description= @Description, Percentage=@value,Amount=null where ID=@ID
    " DeleteCommand="delete from gsContractsCharges where ID=@ID">
            <UpdateParameters>
                <asp:Parameter Type="String" Name="Code" />
                <asp:Parameter Type="String" Name="Description" />
                <asp:Parameter Type="Double" Name="value" />
                <asp:Parameter Type="String" Name="AmtPercenteage" />
                <asp:Parameter Type="Int32" Name="ID" />
            </UpdateParameters>
            <DeleteParameters>
                <asp:Parameter Type="Int32" Name="ID" />
            </DeleteParameters>
            <InsertParameters>
                <asp:Parameter Type="String" Name="Code" />
                <asp:Parameter Type="String" Name="Description" />
                <asp:Parameter Type="Double" Name="value" />
                <asp:Parameter Type="String" Name="AmtPercenteage" />
            </InsertParameters>
        </asp:SqlDataSource>
        <ext:Store ID="Store1" runat="server" DataSourceID="SqlDataSource1">
            <Reader>
                <ext:JsonReader IDProperty="ID">
                    <Fields>
                        <ext:RecordField Name="ID">
                        </ext:RecordField>
                        <ext:RecordField Name="Code" AllowBlank="false">
                        </ext:RecordField>
                        <ext:RecordField Name="Description" AllowBlank="false">
                        </ext:RecordField>
                        <ext:RecordField Name="value" AllowBlank="false">
                        </ext:RecordField>
                        <ext:RecordField Name="AmtPercenteage">
                        </ext:RecordField>
                    </Fields>
                </ext:JsonReader>
            </Reader>
            <Listeners>
                <BeforeSave Handler="var valid = true; this.each(function(r){if(r.dirty && !r.isValid()){valid=false;}});" />
                <LoadException Handler="Ext.Msg.alert(' Load failed', e.message || e);" />
                <CommitFailed Handler="Ext.Msg.alert('Commit failed', 'Reason: ' + msg);" />
                <SaveException Handler="Ext.Msg.alert('Save failed', e.message || e);" />
                <CommitDone Handler="Ext.Msg.alert('Commit', 'The data successfully saved');" />
            </Listeners>
        </ext:Store>
        <ext:GridPanel runat="server" ID="GridPanel1" StoreID="Store1" Height="250" Frame="true"
            Title="Web Ad Positions" AutoExpandColumn="Code" AutoExpandMax="400">
            <Listeners>
                <ValidateEdit Fn="Editing" />
            </Listeners>
            <ColumnModel runat="server" ID="GridPanel1_ColumnModel1">
                <Columns>
                    <ext:Column DataIndex="Code" Header="Name">
                        <Editor>
                            <ext:TextField ID="TextField1" runat="server" AllowBlank="false" />
                        </Editor>
                    </ext:Column>
                    <ext:Column DataIndex="Description" Header="Description">
                        <Editor>
                            <ext:TextArea ID="TextArea1" runat="server"   AllowBlank="false"/>
                        </Editor>
                    </ext:Column>
                    <ext:Column DataIndex="AmtPercenteage" Header="AmtPercenteage">
                        <Editor>
                            <ext:ComboBox runat="server" ID="cmb1">
                                <Items>
                                    <ext:ListItem Text="Amount" Value="0" />
                                    <ext:ListItem Text="Percentage" Value="1" />
                                </Items>
                            </ext:ComboBox>
                        </Editor>
                        <Renderer Fn="AmtPercenteageRender" />
                    </ext:Column>
                    <ext:Column DataIndex="value" Header="value">
                        <Editor>
                            <ext:TextField ID="TextField3" runat="server"  AllowBlank="false" />
                        </Editor>
                    </ext:Column>
                </Columns>
            </ColumnModel>
            <SelectionModel>
                <ext:RowSelectionModel runat="server" ID="SelectionModel1" />
            </SelectionModel>
        </ext:GridPanel>
        <ext:Button runat="server" ID="btnAdd" Text="Add" Icon="Add">
            <Listeners>
                <Click Handler="#{GridPanel1}.insertRecord(0, {});#{GridPanel1}.getView().focusRow(0);#{GridPanel1}.startEditing(0, 0);" />
            </Listeners>
        </ext:Button>
        <ext:Button ID="Button1" runat="server" Text="Save">
            <Listeners>
                <Click Handler="#{GridPanel1}.save();" />
            </Listeners>
        </ext:Button>
        </form>
    </body>
    </html>
    Last edited by kondareddy1984; Jun 30, 2011 at 3:03 AM.
  4. #4
    Hi,

    I don't see that you retrun valid from BeforeSave, please see mentioned example again

Similar Threads

  1. using DataTable as Store and saving data
    By angel colmenares in forum 1.x Help
    Replies: 0
    Last Post: Apr 16, 2010, 12:13 AM
  2. Replies: 1
    Last Post: Jan 26, 2010, 10:57 AM
  3. Replies: 1
    Last Post: Jan 13, 2010, 11:36 AM
  4. Saving data in master detail form
    By anand in forum 1.x Help
    Replies: 1
    Last Post: Sep 18, 2009, 7:47 AM
  5. Problem saving grid data
    By n_s_adhikari@rediffmail.com in forum 1.x Help
    Replies: 1
    Last Post: Sep 11, 2009, 9:59 AM

Posting Permissions