TCS54321 Ответов: 1

Как привязать CheckBoxList с на событие onChange, после чего текстовое поле с помощью JavaScript


у меня есть текстовое поле внутри gridview. я называю функций javascipt текстовое поле на событие onclick функции. и нужно привязать checkboxlist с помощью этой функции javascript.

вот мой код:-

<asp:GridView ID="GridView2" runat="server" C AutoGenerateColumns="False" Width="100%">
    <Columns>
        <asp:TemplateField HeaderText="text1" >
            <ItemTemplate>
                <asp:TextBox ID="txt1" runat="server" onclick='<%#string.Format("javascript:BindCheckboxlist(\"{0}\", \"{1}\")", ((GridViewRow) Container).FindControl("txt1").ClientID, ((GridViewRow) Container).FindControl("txt2").ClientID) %>' Text='<%# Bind("txt1") %>'></asp:TextBox>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="text2" >
            <ItemTemplate>
                <asp:TextBox ID="txt2" runat="server" Text='<%# Bind("txt2") %>'></asp:TextBox>
            </ItemTemplate>
            <ControlStyle Width="150px" />
        </asp:TemplateField>
    </Columns>
</asp:GridView> 


<asp:CheckBoxList ID="chklist" runat="server">
  </asp:CheckBoxList>



я получаю ошибку
Cannot read property 'getElementsByTagName' of null
.
может ли кто-нибудь предложить мне это решение? как я могу это сделать?

Что я уже пробовал:

<script type="text/javascript">
            function BindCheckboxlist(_txt1, _txt2) {

                var CHK = document.getElementById("<%=chklist.ClientID%>");

                    addToCheckBoxListList(CHK,'abc','abc')
            }

            function addToCheckBoxListList(checkBoxListId, displayText, checkBoxValue) {
                var checkBoxListRef = document.getElementById(checkBoxListId);
                var rowArray = checkBoxListRef.getElementsByTagName('input');
                var rowCount = rowArray.length;

                var rowElement = checkBoxListRef.insertRow(rowCount);
                var columnElement = rowElement.insertCell(0);

                var checkBoxRef = document.createElement('input');
                var labelRef = document.createElement('label');

                checkBoxRef.type = 'checkbox';
                checkBoxRef.value = checkBoxValue;
                checkBoxRef.id = checkBoxListId + '_' + rowCount;
                checkBoxRef.name = checkBoxListId + ':' + rowCount;

                labelRef.innerHTML = displayText;

                columnElement.appendChild(checkBoxRef);
                columnElement.appendChild(labelRef);
            }
    </script>

1 Ответов

Рейтинг:
0

Richard Deeming

Начните с передачи идентификатора списка флажков в addToCheckBoxListList функция, а не передача самого элемента:

function BindCheckboxlist(_txt1, _txt2) {
    var CHK = "<%=chklist.ClientID%>";
    addToCheckBoxListList(CHK, 'abc', 'abc');
}
Вам нужно будет проверить, действительно ли элемент управления отображает окружающий элемент. Если это не так, document.getElementById ничего не найдет.

Кроме того, серверный элемент управления ничего не будет знать о значениях, добавленных с помощью Javascript. Вам придется прочитать Request.Form коллекция для считывания значений из них.