2013-06-17 3 views
0

Есть ли способ, в котором мы можем воспроизвести содержимое панели. Например, у меня есть панель с двумя текстовыми полями. Нажав кнопку еще раз, я хотел бы иметь другую панель, ниже которой снова есть два текстовых поля, как первый, или добавьте два текстовых поля в существующую панель. Моя конечная цель - добавить элементы управления, когда пользователь нажимает на большую кнопку и получает данные от этих элементов управления. This is the controls inside the panel that i would like to reproduceВоспроизводить содержимое панели динамически

любой возможный способ, где я могу добавить элементы управления, как показано в макете на стороне сервера? Пожалуйста, помогите!

+0

Нч U попытался использовать Jquery или JavaScript для создания новых элементов управления? –

+0

Можно добавить элемент управления на стороне сервера через jquery? или как обращаться к элементам, созданным jquery в C# – Karthik

+0

Возможно использование 'Panel' внутри' PlaceHolder', но сложная часть здесь - когда вы получаете значения своих полей в 'Panel', которые вы реплицируете. –

ответ

0

Существует множество способов решить эту проблему. Вы можете добавить собственные элементы DOM самостоятельно, используя простой JavaScript или jQuery, или использовать некоторые JS MV * framework, такие как KnockoutJS (пример: http://knockoutjs.com/examples/contactsEditor.html) или AngularJS.

0

, вы можете, очевидно, добавить динамические элементы управления из кода, расположенного по кнопке click button «больше кнопки».

Click Here для более ссылок:

+0

Я уже пробовал, как вы указали. Он динамически добавляет элементы управления, которые нужны ему в моей таблице, как показано в snip. – Karthik

+0

Извините, я не могу видеть изображение здесь, на моем ПК из-за некоторого заблокированного контента. но с какими проблемами вы сталкиваетесь при добавлении динамических элементов управления из кода? –

+0

Мне нужно это в определенном макете. Панель будет иметь выпадающее меню и шесть текстовых полей – Karthik

0

Если вы хотите, чтобы достичь этого на стороне клиента с помощью JQuery, затем «ближайший()» (найти/строку исходного элемента повторяться рядом с кнопкой Добавить/удалить и т.д. , особенно если он находится в формате таблицы/сетки) в сочетании с функцией clone(), (чтобы сделать копию исходного элемента/строки), а затем вы можете вставить клон внутри целевого контейнера. Следующая ссылка может помочь вам достичь того, чего вы хотите: jQuery Clone table row

Но делать это в ASP.Net WebForms должно быть много прямо вперед.

Кроме того, обратите внимание, что было бы очень полезно получить более быстрый ответ, указав в описании более подробные сведения (например, MVC, WebForms и т. Д.), Какие испытания вы провели, чтобы найти/исправить проблему) и это поможет сэкономить время других. Для получения дополнительной информации: https://stackoverflow.com/questions/how-to-ask

+0

Спасибо за помощь. Как мы будем добиваться того же через серверную сторону? – Karthik

+0

Обрабатывать событие нажатия кнопки на стороне сервера и делать остальную часть материала на основе вашего требования, если у вас есть понимание в модели событий ASP.NET Asp.Net, иначе вы можете обратиться к MSDN. Кроме того, я прошу вас еще раз прочитать последний абзац в моем ответе, прежде чем размещать вопрос, пожалуйста. –

+0

с тегом webform. Я уже пробовал это, и я знаю, что элементы управления могут быть созданы динамически. Но мой вопрос: мне нужно, чтобы он был в том же макете, что и панель, которую я показал на изображении, и поэтому пытаюсь воспроизвести всю панель. Возможно ли это? – Karthik

0

попробовать это

свою страницу ASPX добавить

<asp:TextBox runat="server" ID="TextBox1" /> 
<asp:TextBox runat="server" ID="TextBox2" /> 
<asp:Button Text="Add" ID="btnAdd" OnClick="btnAdd_Click" runat="server" /> 
<asp:Repeater ID="rpt" runat="server"> 
    <ItemTemplate> 
     <asp:TextBox runat="server" ID="txt1" Text='<%# Eval("str1") %>' /> 
     <asp:TextBox runat="server" ID="txt2" Text='<%# Eval("str2") %>' /><br /> 
    </ItemTemplate> 
</asp:Repeater> 

и в коде позади

protected void btnAdd_Click(object sender, EventArgs e) 
    { 
     List<temp> lst = GetItemFromRpt(); 
     lst.Add(new temp 
     { 
      str1=TextBox1.Text, 
      str2 = TextBox2.Text 

     }); 
     rpt.DataSource = lst; 
     rpt.DataBind(); 
    } 

    private List<temp> GetItemFromRpt() 
    { 
     List<temp> lst = new List<temp>(); 
     for (int i = 0; i < rpt.Items.Count; i++) 
     { 
      temp obj = new temp(); 
      obj.str1 = ((TextBox)rpt.Items[i].FindControl("txt1")).Text; 
      obj.str2 = ((TextBox)rpt.Items[i].FindControl("txt2")).Text; 
      lst.Add(obj); 

     } 
     return lst; 
    } 

    public class temp // instead of temp you can use whatever your entity class you need 
    { 
     public string str1 { get; set; } 
     public string str2 { get; set; } 
    } 
Смежные вопросы