Событие Javascript после того, как все элементы управления размещены на странице? - PullRequest
0 голосов
/ 09 декабря 2011

Я создал javascript, который проверяет, нет ли в сетке строк, он вставит ячейку с кнопкой ввода, проблема в том, что когда я пытаюсь извлечь сетку с помощью document.getElementByID (), возвращаемое значение равно нулю, потому что элементы управления еще не загружены на страницу. Так есть ли событие, которое будет взаимодействовать с элементами управления, потому что я не хочу вызывать его со страницы, я бы хотел, чтобы это происходило автоматически?

Edit: Я попробовал window.onload, и он не сработал, странно то, что когда я его отслеживал, сначала запускается загрузка страницы и заполняется сетка, а затем запускается функция javascript.

Вот код:

<script language="javascript" type="text/javascript">

window.onload = gridAddButton();
function gridAddButton() {

    var gridTable = document.getElementById('<%=GridView_Users.ClientID%>');
    gridTableRowsLength = gridTable.rows.length;

    if (gridTableRowsLength == 0) {

        var addButton = document.createElement('input');
        addButton.id = 'tempButtonAdd';

        gridTable.rows[1].cells[4].appendChild(addButton);
    }
}

<asp:GridView ID="GridView_Users" runat="server" DataKeyNames="ID" Width="100%" 
        AutoGenerateColumns="False">
    <Columns>
        <asp:BoundField DataField="UserName" HeaderText="UserName" />
        <asp:BoundField DataField="Email" HeaderText="Email" />
        <asp:BoundField DataField="Company" HeaderText="Company" />
        <asp:BoundField DataField="Address" HeaderText="Address" />
        <asp:TemplateField>
            <ItemTemplate>
                <asp:LinkButton ID="LinkButton_Edit" runat="server" 
                    onclick="LinkButton_Edit_Click">Edit</asp:LinkButton>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:LinkButton ID="LinkButton_Delete" runat="server" 
                    onclick="LinkButton_Delete_Click">Delete</asp:LinkButton>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

1 Ответ

0 голосов
/ 09 декабря 2011

Вы должны использовать событие DOM Ready. Вы можете использовать такую ​​библиотеку, как jQuery, например:

$(document).ready(function(){
    // Here, the grid is made into DOM, so you can access it.
});

Однако, если у вас все еще есть проблемы, вам следует проверить другие причины. Например, элементы управления Microsoft ASP.NET, как правило, изменяют атрибут id во время выполнения, поэтому вам может потребоваться использовать ClientIDMode='Static' на своей странице, чтобы убедиться, что вы можете получить свой элемент, используя document.getElementById();.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...