使用jQuery在嵌套GridView中向TextBox添加值

时间:2016-07-16 18:03:30

标签: javascript jquery asp.net gridview

我有一个嵌套网格视图\documentclass{article} \usepackage[]{imakeidx} \makeindex \begin{document} <<>>= y <- log(sqrt(1:10)) @ \printindex \end{document} 用于在嵌套网格视图中显示和隐藏div标记。
默认情况下,当我们点击a link时,Div Tag被禁用在此a link下显示(启用)Div标记,它们是一个Div Tag和一个TextBox
当用户点击Button div时,我想在此文本框中添加a link

例如

@username

我正在使用的JQuery

<asp:GridView ID="GridParent" runat="server">
 <Columns>
   <asp:TemplateField>
     <ItemTemplate>
      <table>
        <tr>
         <td>
           -----------
           -----------
         </td>
         <td>
         <asp:GridView ID="GridChild" runat="server">
          <Columns>
           <asp:TemplateField>
            <ItemTemplate>
               <a href='#' onclick='showDiv(); return false;'>ShowDiv</a>
               <div id='divShow'>
                 <asp:Textbox ID="TextBox1" runat="server"></asp:TextBox>
                 <asp:Button ID="Button1" runat="server" Text="Button" onclick=showText(); return false; />
               </div>
            </ItemTemplate>
           </asp:TemplateField>
         </Columns>
        </asp:GridView>
        </td>
       </tr>
      </table>
     </ItemTemplate>
   </asp:TemplateField>
 </Columns>
</asp:GridView>

以上jquery代码用于启用Div标签,但未将function showDiv() { $("#divShow").show(); $("#TextBox1").text('@username'); return false; } 添加到@username

3 个答案:

答案 0 :(得分:0)

我对ASP知之甚少,但是如果这样在网页中呈现类似于<input type='text' />的文本框那么你想要使用$(“#TextBox1”)。val('@ username')而不是比.text()

答案 1 :(得分:0)

解决方案与我给你previous question的解决方案非常相似。您可以在调用showDiv(使用this关键字)中传递对锚标记的引用,并设置div的类名称(例如innerDiv):

<a href='#' onclick='showDiv(this); return false;'>ShowDiv</a>
<div id='divShow' class='innerDiv'>

showDiv可以找到表格单元格容器,然后是innerDiv类名称和文本框的元素。

function showDiv(lnk) {
    var $div = $(lnk).closest('td').find('.innerDiv');
    $div.show();
    $div.find('input[type=text]').val('@username');
}

请注意,我在jQuery选择器中使用类名和元素类型。元素的ID不可靠,因为GridView的每一行都显示这些控件,这些控件都应具有不同的ID。

答案 2 :(得分:0)

您的代码存在两个问题。

首先,ASP.NET为服务器控件生成复杂的ID(类似于blabla_gridparent_gridchild_textbox1_blabla,而不是简单的textbox1),因此如果您想在客户端使用控件,则必须询问通过服务器控件的ClientID属性获取该ID的ASP.NET:

function showDiv() {            
     $("#divShow").show();
     $("#<%= TextBox1.ClientID %>").val('@username');
     return false;
}

注意,这是服务器代码。我假设这个JS代码放在.aspx页面(或.ascx控件)中,而不是静态.js文件中。如果是静态.js文件,则需要将该ID作为参数传递。

其次,您必须使用.val() jquery方法来处理input值。 TextBox已呈现为input