簡體   English   中英

在GridView中訪問JS腳本的ASP文本框

[英]Accessing ASP textbox inside gridview for JS script

我有一個asp:Gridview,我希望我的JS腳本在聚焦單元格時觸發模式。 我的aspx文件中包含以下內容:

<asp:GridView ID="gridviewSLds" runat="server" CellPadding="0" ForeColor="#333333" GridLines="Both" AutoGenerateColumns="False" OnRowCreated="gridviewSLds_RowCreated">
                            <AlternatingRowStyle BackColor="White" />
                            <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
                            <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
                            <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
                            <RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
                            <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
                            <SortedAscendingCellStyle BackColor="#FDF5AC" />
                            <SortedAscendingHeaderStyle BackColor="#4D0000" />
                            <SortedDescendingCellStyle BackColor="#FCF6C0" />
                            <SortedDescendingHeaderStyle BackColor="#820000" />
                            <Columns>
                                <asp:TemplateField ItemStyle-BorderWidth="0">
                                    <ItemTemplate>
                                        <asp:HiddenField ID="HiddenField1" runat="server" Value='<%# Eval("Id") %>' />
                                    </ItemTemplate>
                                </asp:TemplateField>
                                <asp:BoundField DataField="item" HeaderText="Metric" SortExpression="item" ReadOnly="false" />
                                <asp:TemplateField HeaderText="Item">
                                    <ItemTemplate>
                                        <asp:TextBox onfocusin="select()" runat="server" Text='<%# Bind("item") %>'
                                            ID="txtfocus" AutoPostBack="true"></asp:TextBox>
                                    </ItemTemplate>
                                    <HeaderStyle HorizontalAlign="Center" />
                                    <ItemStyle HorizontalAlign="Center" />
                                </asp:TemplateField>

                            </Columns>
                        </asp:GridView>

我的腳本如下:

            var usrfocustxt = document.getElementById('<%txtfocus.item%>');

        itemtypetxt.onfocus = function () {
            modal.style.display = "block";
        }

但是它告訴我在當前上下文中不存在名稱“ txtfocus”。 我究竟做錯了什么?

您做錯了幾件事。 首先,如果您想在JavaScript中使用ID,則應按以下方式使用它:

var usrfocustxt = document.getElementById('<%= txtfocus.ClientID %>');

但這仍然會給您錯誤“ txtfocus”在當前上下文中不存在。

因為GridView(以及重復數據的其他控件)將為TextBox提供唯一的名稱和ID,所以它不會在頁面上多次出現。 如果查看HTML源代碼,您可能已經看到TextBox HTML代碼現在看起來像這樣:

<input name="ctl00$mainContentPane$rptr$ctl05$txtfocus" id="mainContentPane_rptr_txtfocus_5" type="text">

名稱和ID已使用索引號和其他數據進行了修改,以使其唯一。 因此,要找到正確的TextBox,像這樣調用模式彈出功能要容易得多。

<asp:TextBox ID="txtfocus" runat="server" onfocus="focusTextBox(this.id)" class="modalpopup"></asp:TextBox>

或者,您可以使用jQuery和類名將函數綁定到TextBox。

<script type="text/javascript">
    $(document).ready(function () {
        $('.modalpopup').focus(function () {
            alert(this.id);
        });
    });
</script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM