TCS54321 Ответов: 1

Получить значение gridview texbox в javascipt


у меня есть 2 текстовых поля внутри gridview. я вызываю функцию j javascipt на событии textbox onclick. мне нужно получить значение обоих текстовых полей в моей функции javascipt, когда я выбираю любое текстовое поле.

вот мой код:-

<asp:GridView ID="GridView2" runat="server" C AutoGenerateColumns="False" Width="100%">
               <Columns>
                   <asp:TemplateField HeaderText="text1" >
                       <ItemTemplate>
                           <asp:TextBox ID="txt1" runat="server" onclick="javascript: BindCheckboxlist()"    Text='<%# Eval("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>


может ли кто-нибудь предложить мне решение?

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

    <script type="text/javascript">
        function BindCheckboxlist() {
            var txtName, txtName2;

            var row = txt1.parentNode.parentNode;

            //Fetch all controls in GridView Row.
            var controls = row.getElementsByTagName("*");

            //Loop through the fetched controls.
            for (var i = 0; i < controls.length; i++) {

                //Find the TextBox control.
                if (controls[i].id.indexOf("txt1") != -1) {
                    txt1= controls[i];
                    alert(txt1);
                }
                if (controls[i].id.indexOf("txt2") != -1) {
                    txt2= controls[i];
                    alert(txt2);
                }
            }
    }
</script>

1 Ответов

Рейтинг:
5

F-ES Sitecore

Передайте идентификаторы элементов в вашу функцию 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>

<script>
    function BindCheckboxlist(txt1ID, txt2ID) {
        var txt1 = document.getElementById(txt1ID);
        var txt2 = document.getElementById(txt2ID);

            var row = txt1.parentNode.parentNode;

            //Fetch all controls in GridView Row.
            var controls = row.getElementsByTagName("*");

            //Loop through the fetched controls.
            for (var i = 0; i < controls.length; i++) {

                //Find the TextBox control.
                if (controls[i].id.indexOf("txt1") != -1) {
                    txt1= controls[i];
                    alert(txt1.value);
                }
                if (controls[i].id.indexOf("txt2") != -1) {
                    txt2= controls[i];
                    alert(txt2.value);
                }
            }
    }
</script>


TCS54321

спасибо. он работает отлично.