2016-07-16 2 views
0

У меня есть вложенный Gridview, содержащий a link, для отображения и скрытия тега div в вложенном gridview.
По умолчанию это Div Tag отключается, когда мы нажимаем на a link, чтобы показать (включить) Div тэг под этим Div Tag они один TextBox и один Button.
Когда пользователь нажимает a link ДИВ позволят в то же время я хочу, чтобы добавить @username в этом текстовом поле будет

Для примераДобавить значение в TextBox в вложенном GridView с помощью 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, который я использую

function showDiv() {    
     $("#divShow").show(); 
     $("#TextBox1").text('@username'); 
     return false; 
     } 

вышеизложенного jQuery, работающий для включения тега Div, но не добавления @username в TextBox1

ответ

0

Я мало что знаю об ASP, но если это отображает текстовое поле на веб-странице, подобное <input type='text' />, тогда вы хотите использовать $ ("# TextBox1"). Val ('@ username'), а не .text()

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. Идентификатор элементов не является надежным, так как каждая строка GridView отображает эти элементы управления, которые должны иметь разные идентификаторы.

+0

его работа для Div Скрыть и показать, но '@ username' не добавляется в текстовое поле – user6503334

+0

Я изменил функцию showDiv для поиска текстового поля внутри div. – ConnorsFan

+0

не работает – user6503334

0

У вас есть две проблемы с кодом.

Во-первых, ASP.NET генерирует сложные идентификаторы для элементов управления сервером (что-то вроде blabla_gridparent_gridchild_textbox1_blabla, а не просто textbox1), поэтому, если вы хотите работать с вами на стороне клиента, вам нужно задать ASP.NET для этого идентификатора через ClientID свойства элемента управления сервером:

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

Обратите внимание, что это код сервера. Я предполагаю, что этот код JS размещен на вашей странице .aspx (или .ascx), а не в статическом файле .js. В случае статического файла .js вам необходимо передать этот ID в качестве параметра.

Во-вторых, вы должны использовать метод jquery .val() для работы с значением input. TextBox отображается в input.

Смежные вопросы