2015-04-25 7 views
2

У меня есть скрытое поле внутри элемента управления ретранслятора и кнопка вне регулятора ретранслятора. ниже - asp.code, который у меня есть.Управление репитером ASP.NET - получение значения скрытого поля внутри элемента управления ретранслятора

<asp:Repeater ID="rptAccordian" runat="server" OnItemDataBound="rptAccordian_ItemDataBound"> 
 
    <ItemTemplate> 
 
    <div class="s_panel"> 
 
     <h1> 
 
      <a href="#" data-content="Tool tip"><%# Eval("Name") %></a> 
 
     </h1> 
 
     <div> 
 
     <p> 
 
      <small><span style="font-family: 'Segoe UI'; font-weight: bold;">Category Objective: </span><span style="font-family: 'Segoe UI'"><%# Eval("Objective") %></span></small> 
 
     </p> 
 
     <p> 
 
      <small><span style="font-family: 'Segoe UI'; font-weight: bold;">Category Riskscore: </span> 
 
       <code><%# Eval("Score") %><span>%</span></code></small> 
 
     </p> 
 
     <p> 
 
      <code> 
 
       <img src="Content/img/add.png" /><asp:LinkButton ID="Add" runat="server">Add Question</asp:LinkButton> 
 
      </code> 
 
     </p> 
 
     <asp:HiddenField ID="hdnCategoryID" runat="server" Value='<%# Bind("CategoryID") %>' /> 
 
     </div> 
 
    </ItemTemplate> 
 
</asp:Repeater> 
 
<div id="modalpopup"> 
 
    <asp:Button ID="btnInsertQuestion" runat="server" Text="Save" OnClick="btnInsertQuestion_Click" /> 
 
</div>

Мой Backend код выглядит следующим образом.

protected void btnInsertQuestion_Click(object sender, EventArgs e) 
{ 
    HiddenField hf = (HiddenField)rptAccordian.FindControl("hdnCategoryID"); 
    catID = Convert.ToInt16(hf.Value); 
    Response.Write("ID is") + catID; 
} 

Есть 13 повторителей, и каждый повторитель будет иметь различный код категории для него. У меня есть кнопка «Ссылка», которая добавляет внутри каждого ретранслятора, и когда я нажимаю эту кнопку, у меня будет модальное всплывающее окно, и у него будет кнопка. При нажатии этой кнопки мне нужно отобразить соответствующий код категории, который принадлежит этому ретранслятору, в котором я нажал кнопку ссылки ADD.

Однако скрытое поле hf отображается как null, и я не могу получить значение скрытого поля этого аккордеона.

+0

Использовать эту ссылку будет полезно. http://stackoverflow.com/questions/29862571/dropdownlist-is-not-showing-the-selected-value –

+0

Вы ищете «HiddenField» с идентификатором «hiddenid», но фактический идентификатор внутри вас aspx - hdnCategoryID». – dario

ответ

1

Я получил свой ответ, используя jQuery. Я нашел элемент управления hdnCategoryID и его значение с помощью jQuery, и я присвоил это значение новому скрытому полю и получил это значение для моего события click.

2

Вы должны получить деталь ретранслятора для доступа скрытое:

protected void btnInsertQuestion_Click(object sender, EventArgs e) 
     { 
      for (int i = 0; i < rptAccordian.Items.Count; i++) 
      { 
       var item = rptAccordian.Items[i]; 

       var hf = item.FindControl("hdnCategoryID") as HiddenField; 
       var val = hf.Value; 
      } 
     } 

ОБНОВЛЕНО

protected void Add_Click(object sender, EventArgs e) 
     { 
      var lb = sender as LinkButton; 
      var par = lb.Parent.FindControl("hdnCategoryID"); 

     } 
+0

Привет, Пробовал с кодом. Однако я получаю ошибку при i

+0

похоже, что коллекция предметов имеет значение null. Вы снова привязываете повторитель к обратной передаче? – Legends

+0

есть. Я привязываю ретранслятор в загрузке страницы (! This.IsPostBack) –

0

Вы можете получить, что без использования скрытых полей. Вам нужно объявить Add LinkButton в повторителе следующим образом.

<asp:LinkButton ID="Add" runat="server" CommandArgument = '<%# Bind("CategoryID")'%> OnClick = "Add_Click">Add Question</asp:LinkButton>

Вы написали код для btnInsertQuestion кнопки мыши, где, как вы просили, чтобы получить CategoryID в кнопке Add мыши, поэтому я предполагаю, что ваше требование является правильным, но вы набрали что-то другое.

Чтобы получить кнопку «Категории» в окне «Добавить», вам нужно написать вот так.

protected void Add_Click(object sender, EventArgs e) 
{ 
    //Get the reference of the clicked button. 
    LinkButton button = (sender as LinkButton); 

    //Get the command argument 
    string cat_id = button.CommandArgument; 
    // Type cast to int if application and use it. 
} 

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

  • Нет связанных вопросов^_^