[CLOSED] KeyNav Tab Event Firing Inconsistently

  1. #1

    [CLOSED] KeyNav Tab Event Firing Inconsistently

    Gentlemen,

    I am having some trouble with KeyNav. I am trying to implement the behavior shown in this older forum thread:

    http://forums.ext.net/showthread.php...b-off-last-row

    I have updated Vladimir's example code to work in the newest version of EXT.NET and have gotten the sample code functioning.

    However, when I implement this code into my real application, the Tab Handler fires inconsistently. If I slowly tab through the various Gridpanel columns, it almost never fires. If I quickly hammer Tab over and over to cycle between the columns, it is much more likely to fire and will generally fire after 2-5 presses of Tab.

    I'm stuck. I am wondering if there's some kind of polling behavior on KeyNav that would cause this? My production app is a much heavier weight applicaiton than the sample app with 6 stores, custom renderers, etc.

    I don't have a code sample that doesn't work to show you, unfortunately, although I am trying to add renderers and columns to the example code until it starts behaving the same way as my production application. But I'm also hoping that there might be a solution that doesn't require this.

    Thank you in advance.
    Last edited by Daniil; Feb 16, 2011 at 1:34 PM. Reason: [CLOSED]
  2. #2
    Hi dmoore,

    It's default behavior in Ext.Net - moving editor to first column of next row.

    So, I can suggest you to remove KeyNav and re-test.

    Example
    <%@ Page Language="C#" %>
    
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    
    <script runat="server">
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!X.IsAjaxRequest)
            {
                Store store = this.GridPanel1.GetStore();
                store.DataSource = new object[] 
                { 
                    new object[] { "test11", "test12", "test13" },
                    new object[] { "test12", "test22", "test23" },
                    new object[] { "test13", "test32", "test33" }
                };
                store.DataBind();
            }
        }
    </script>
    
    <!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 runat="server">
        <title>Ext.Net Example</title>
    </head>
    <body>
        <form runat="server">
        <ext:ResourceManager runat="server" />
        <ext:GridPanel ID="GridPanel1" runat="server" AutoHeight="true">
            <Store>
                <ext:Store runat="server">
                    <Reader>
                        <ext:ArrayReader>
                            <Fields>
                                <ext:RecordField Name="test1" />
                                <ext:RecordField Name="test2" />
                                <ext:RecordField Name="test3" />
                            </Fields>
                        </ext:ArrayReader>
                    </Reader>
                </ext:Store>
            </Store>
            <ColumnModel runat="server">
                <Columns>
                    <ext:Column Header="Test1" DataIndex="test1">
                        <Editor>
                            <ext:TextField runat="server" />
                        </Editor>
                    </ext:Column>
                    <ext:Column Header="Test2" DataIndex="test2">
                        <Editor>
                            <ext:TextField runat="server" />
                        </Editor>
                    </ext:Column>
                    <ext:Column Header="Test3" DataIndex="test3">
                        <Editor>
                            <ext:TextField runat="server" />
                        </Editor>
                    </ext:Column>
                </Columns>
            </ColumnModel>
        </ext:GridPanel>
        </form>
    </body>
    </html>
  3. #3
    Adding a new record can look something like this in Ext.Net 1.0, please see the example:

    Example
    <%@ Page Language="C#" %>
    
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    
    <script runat="server">
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!X.IsAjaxRequest)
            {
                Store store = this.GridPanel1.GetStore();
                store.DataSource = new object[] 
                { 
                    new object[] { "test11", "test12", "test13" },
                    new object[] { "test12", "test22", "test23" },
                    new object[] { "test13", "test32", "test33" }
                };
                store.DataBind();
            }
        }
    </script>
    
    <!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 runat="server">
        <title>Ext.Net Example</title>
    
        <script type="text/javascript">
            var onBeforeRender = function() {
                this.selModel.onEditorKey = this.selModel.onEditorKey.createSequence(myOnEditorKey);
            }
            
            var myOnEditorKey = function(field, e) {
                if (!this.grid.editing && e.getKey() == e.TAB && !e.shiftKey) {
                    this.grid.addRecord();
                    this.grid.startEditing(this.grid.getStore().getCount() - 1, 0);
                }
            }
        </script>
    
    </head>
    <body>
        <form runat="server">
        <ext:ResourceManager runat="server" />
        <ext:GridPanel ID="GridPanel1" runat="server" AutoHeight="true">
            <Store>
                <ext:Store runat="server">
                    <Reader>
                        <ext:ArrayReader>
                            <Fields>
                                <ext:RecordField Name="test1" />
                                <ext:RecordField Name="test2" />
                                <ext:RecordField Name="test3" />
                            </Fields>
                        </ext:ArrayReader>
                    </Reader>
                </ext:Store>
            </Store>
            <ColumnModel runat="server">
                <Columns>
                    <ext:Column Header="Test1" DataIndex="test1">
                        <Editor>
                            <ext:TextField runat="server" />
                        </Editor>
                    </ext:Column>
                    <ext:Column Header="Test2" DataIndex="test2">
                        <Editor>
                            <ext:TextField runat="server" />
                        </Editor>
                    </ext:Column>
                    <ext:Column Header="Test3" DataIndex="test3">
                        <Editor>
                            <ext:TextField runat="server" />
                        </Editor>
                    </ext:Column>
                </Columns>
            </ColumnModel>
            <SelectionModel>
                <ext:RowSelectionModel runat="server" />
            </SelectionModel>
            <Listeners>
                <BeforeRender Fn="onBeforeRender" />
            </Listeners>
        </ext:GridPanel>
        </form>
    </body>
    </html>

Similar Threads

  1. [CLOSED] BeforeClientInit event not firing
    By jchau in forum 1.x Legacy Premium Help
    Replies: 6
    Last Post: Apr 04, 2011, 7:07 PM
  2. [CLOSED] Button event firing twice?
    By geodan in forum 1.x Legacy Premium Help
    Replies: 6
    Last Post: Aug 18, 2010, 7:03 PM
  3. [CLOSED] KeyDown Event Not Firing
    By JonG in forum 1.x Legacy Premium Help
    Replies: 11
    Last Post: Jun 04, 2010, 1:57 PM
  4. [CLOSED] FileUploadField not firing FileSelected event
    By SFritsche in forum 1.x Legacy Premium Help
    Replies: 2
    Last Post: Feb 05, 2010, 11:15 AM
  5. [CLOSED] setting value without firing event handler
    By maras54 in forum 1.x Legacy Premium Help
    Replies: 2
    Last Post: Jun 21, 2009, 6:34 PM

Tags for this Thread

Posting Permissions