Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамическое расположение компонент 
:(
    Опции темы
kelt
Дата 5.10.2006, 07:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 172
Регистрация: 21.6.2005

Репутация: нет
Всего: 0



Всем привет.
Я пишу на C# под ASP.NET и у меня возникла такая задача, надо вывести на страницу несколько одинаковых компонент, количество получаем от количества записей полученных из таблице.
Вопрос стоит в том как вывести эти компоненты и как потом таким же циклом просйтись по ним и через из имена выполнить действия!
Заранее спасибо!
--------------------
Timeo danaos et dona ferentes 
PM ICQ   Вверх
ivashkanet
Дата 5.10.2006, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 1
Всего: 149



Код

public partial class Form1 : Form
    {
        private Button[] _buttonList;

        public Form1()
        {
            InitializeComponent();

            // создаем массив на 10 кнопок
            _buttonList = new Button[10];

            // приостанавливаем обновление формы
            this.SuspendLayout();

            // инициализируем каждую и ложим на форму
            for (int i = 0; i < _buttonList.Length; i++)
            {
                _buttonList[i] = new Button();
                _buttonList[i].Location = new System.Drawing.Point(10, 10+i*100);
                _buttonList[i].Name = "button" + i.ToString();
                _buttonList[i].Size = new System.Drawing.Size(75, 23);
                _buttonList[i].TabIndex = i;
                _buttonList[i].Text = "button" + i.ToString();
                _buttonList[i].UseVisualStyleBackColor = true;
                
                // если нужен обработчик событий
                _buttonList[i].Click += new EventHandler(Button_Click);
            }
            // добавляем кнопки на форму
            this.Controls.AddRange(_buttonList);

            // запускаем обновление опять
            this.ResumeLayout(false);

        }

        void Button_Click(object sender, EventArgs e)
        {
            // получаем кнопку на которую нажали
            Button btn = (Button)sender;

            MessageBox.Show("Была нажата кнопка:" + btn.Text);
        }
    }


Добавлено @ 09:24 
Ой, это ж ASP  smile 

Но смысл, я надеюсь ясен. Если что пиши  smile

Добавлено @ 09:25 
Еще момент. Для подгрузки динамически сужествует контрол PlaceHolder (вроде так). Так на него и надо кидать кнопки. А в остальном все то же самое, только "форму" приостанавливать не надо. Ее же еще нет.
PM MAIL WWW ICQ   Вверх
Pankon
Дата 5.10.2006, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 739
Регистрация: 2.6.2005

Репутация: 2
Всего: 5



Цитата(kelt @  5.10.2006,  07:28 Найти цитируемый пост)
записей полученных из таблице
 GridView

PM MAIL   Вверх
$tatic
Дата 5.10.2006, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 28.1.2005

Репутация: нет
Всего: 22



А Repeater не подойдет?
PM MAIL   Вверх
mr.DUDA
Дата 5.10.2006, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 5
Всего: 232



Repeater очень даже подойдёт, можно каждому контролу выставлять свой Id, и через него делать нужные действия (я так понимаю, на javascript-е).


--------------------
user posted image
PM MAIL WWW   Вверх
kelt
Дата 6.10.2006, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 172
Регистрация: 21.6.2005

Репутация: нет
Всего: 0



Цитата(mr.DUDA @  5.10.2006,  23:23 Найти цитируемый пост)
(я так понимаю, на javascript-е)


Не совсем так. Все делаеться на стороне сервера. На странице есть компоненты, пока нет возможности их выводить динамически обхожусь свойством Visible, но отображение их все равно надо делать динамически.

--------------------
Timeo danaos et dona ferentes 
PM ICQ   Вверх
Mymik
Дата 7.10.2006, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

Репутация: 50
Всего: 78



kelt, так если на строно сервера, так почему ты не хочешь, на самом деле, пользоваться Repeater или GridView ??? туда ж можно все что угодно засунуть и под каждый елемент будет выделаться свой id... и точно так же, можно с помощью любого цикла пройтись по всему контенту Repeater или GridView... 


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
kelt
Дата 9.10.2006, 07:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 172
Регистрация: 21.6.2005

Репутация: нет
Всего: 0



Просто мне надо вывести на форму компоненты FileUpload. А как работать с Repeater. А такого не знаю еще.
--------------------
Timeo danaos et dona ferentes 
PM ICQ   Вверх
kelt
Дата 13.11.2006, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 172
Регистрация: 21.6.2005

Репутация: нет
Всего: 0



Все сделано и работает. Возникла только проблема в другом. Компонента FileUpload работает идеально, а вот TextBox почему нет.
Вот код работы с компонентой FileUpload:
Код

                <% 
                    for (int i = 0; i < dsAttachedFiles.Tables["AttachedFiles"].Rows.Count; i++)
                    {
                        string LongName = (dsAttachedFiles.Tables["AttachedFiles"].Rows[i].ItemArray[1]).ToString();
                        string LanName = (dsAttachedFiles.Tables["AttachedFiles"].Rows[i].ItemArray[2]).ToString();
                        uf.ID = LanName;
                        txtFile.Text = LongName + ":";                        
                %>
                <asp:Table ID="tUploadFile" runat="server" Width="100%" BackColor="#99cccc">
                    <asp:TableRow>
                        <asp:TableCell HorizontalAlign="Right" Width="50%"><asp:Label ID="txtFile" runat="server" CssClass="txtPage"></asp:Label></asp:TableCell>
                        <asp:TableCell><asp:FileUpload ID="uf" runat="server" /></asp:TableCell>
                    </asp:TableRow>
                </asp:Table>
                <%
                    }
                %>


вот обработка этих компонент:
Код

            for (int i = 0; i < dsAttachedFiles.Tables["AttachedFiles"].Rows.Count; i++)
            {
                uf.ID = (dsAttachedFiles.Tables["AttachedFiles"].Rows[i].ItemArray[2]).ToString();
                if (uf.HasFile)
                {
                    string Extension = Path.GetExtension(uf.FileName);
                    int TypeID = int.Parse((dsAttachedFiles.Tables["AttachedFiles"].Rows[i].ItemArray[0]).ToString());
                    if ((Extension == ".doc") || (Extension == ".rtf") || (Extension == ".xls") || (Extension == ".jpg"))
                        Demand.AttachFile(DemandID, TypeID, Path.GetFileNameWithoutExtension(uf.FileName), Path.GetExtension(uf.FileName), Client.UpFile(uf), "", Client.FileSize(uf.FileName));
                    else
                        fAttach = false;
                }
            }


А вот днамическое создание компонент TextBox:
Код

                <% 
                    if (dsDecisionExitsView.Tables["DecisionExistList"] != null)
                    {
                        for (int i = 0; i < dsDecisionExitsView.Tables["DecisionExistList"].Rows.Count; i++)
                        {
                            string LongName = (dsDecisionExitsView.Tables["DecisionExistList"].Rows[i].ItemArray[1]).ToString();
                            string LanName = (dsDecisionExitsView.Tables["DecisionExistList"].Rows[i].ItemArray[2]).ToString();
                            txtDecisionExist.Text = LongName + ":";
                            tb.ID = LanName;// "tbNumber" + LanName;
                            tbDate.ID = "tbDate" + LanName;
                %>
                <asp:Table ID="tDecisionExistView" runat="server" Width="100%" BackColor="#99cccc">
                    <asp:TableRow>
                        <asp:TableCell HorizontalAlign="Right" Width="50%"><asp:Label ID="txtDecisionExist" runat="server" CssClass="txtPage"></asp:Label></asp:TableCell>
                        <asp:TableCell><asp:TextBox ID="tb" runat="server" Width="130px" MaxLength="10"></asp:TextBox></asp:TableCell>
                        <asp:TableCell><asp:TextBox ID="tbDate" runat="server" Width="130px" MaxLength="10"></asp:TextBox></asp:TableCell>
                    </asp:TableRow>
                </asp:Table>
                <%
                        }
                    }
                %>

и обработка:
Код

            if ((dsDecisionExitsView.Tables["DecisionExistList"] != null) && (dsDecisionExitsView.Tables["DecisionExistList"].Rows.Count > 0))
            {
                string LanName;
                int IdName;
                for (int i = 0; i < dsDecisionExitsView.Tables["DecisionExistList"].Rows.Count; i++)
                {
                    LanName = (dsDecisionExitsView.Tables["DecisionExistList"].Rows[i].ItemArray[2]).ToString();
                    tb.ID = LanName;// "tbNumber" + LanName;
                    //tbDate.ID = "tbDate" + LanName;
                    if (tb.Text == "")// || (tbDate.Text == ""))
                        DecisionExist = false;
                }
                if (DecisionExist)
                    for (int i = 0; i < dsDecisionExitsView.Tables["DecisionExistList"].Rows.Count; i++)
                    {
                        IdName = int.Parse((dsDecisionExitsView.Tables["DecisionExistList"].Rows[i].ItemArray[0]).ToString());
                        LanName = (dsDecisionExitsView.Tables["DecisionExistList"].Rows[i].ItemArray[2]).ToString();
                        tb.ID = LanName;// "tbNumber" + LanName;
                        tbDate.ID = "tbDate" + LanName;
                        if (!Demand.AddDecisionExist(DemandID, IdName, tb.Text, tbDate.Text))
                            continue;
                    }
            }

Но проверка на заполненость компоненты почему то не проходит.
--------------------
Timeo danaos et dona ferentes 
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0525 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.