مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

maryam1369

عضویت از 1393/06/15

ابجاد کنترل در زمان اجرا

  • سه شنبه 14 بهمن 1393
  • 17:18
تشکر میکنم

 سلام
دوستان من میخواستم یه سری کنترل در روی فرم درست کنم با توجه به فیلد های جدولی که دارم و بعد مقدار اون کنترل ها رو داخل بانک ذخیره کنم
من خودم با استفاده از DataList اینکارو کردم و کنترل ها ایجاد شده که اینم با استفاده از Databound مربط به دیتالیست اینکارو کردم ولی الان میخوام وقتی کاربر روی دکمه ذخیره ک بیرون از دیتالیسته
زد اطلاعات داخل کنترل ها در بانک ذخیره شود ولی هر کاری میکنم نمیشه

ممنون میشم راهنمایی کنید کارم فوری هستش

پاسخ های این پرسش

تعداد پاسخ ها : 1 پاسخ
کاربر سایت

firstnight_yeah

عضویت از 1393/11/18

  • شنبه 18 بهمن 1393
  • 15:32

1 - شما یک asp:panel یا asp:placeholder در صفحه قرار می دین 

2- 

        private void BindProperties(long catId)
        {
            _plchForm.Controls.Clear();
            if (catId == -1)
            {
                _plchProperties.Visible = false;
                return;
            }
            _plchProperties.Visible = true;
            var list = PropertyBL.GetAll(catId);
            foreach (var prp in list)
            {
                _plchForm.Controls.Add(new Literal { Text = "<br/>" });
                if (prp.PropertiyType != null)
                    switch ((PropertyBL.PropertiesType)prp.PropertiyType)
                    {
                        case PropertyBL.PropertiesType.Text:
                            var control = new TextBox();
                            control.Attributes.Add("type", prp.PropertiyType.ToString());
                            control.Attributes.Add("data-Id", prp.PropertyId.ToString());
                            control.Attributes.Add("placeholder", prp.PropertyName);
                            control.ID = "_txt" + prp.PropertyId;
                            control.ToolTip = prp.Description;
                            _plchForm.Controls.Add(control);
                            break;
                        case PropertyBL.PropertiesType.TextArea:
                            var control2 = new TextBox();
                            control2.Attributes.Add("type", prp.PropertiyType.ToString());
                            control2.Attributes.Add("data-Id", prp.PropertyId.ToString());
                            control2.Attributes.Add("placeholder", prp.PropertyName);
                            control2.ID = "_txtArea" + prp.PropertyId;
                            control2.Columns = (int)prp.Size;
                            control2.TextMode = TextBoxMode.MultiLine;
                            control2.ToolTip = prp.Description;
                            _plchForm.Controls.Add(control2);
                            break;
                        case PropertyBL.PropertiesType.CheckBox:
                            var cbx = new CheckBox();
                            cbx.Attributes.Add("type", prp.PropertiyType.ToString());
                            cbx.Attributes.Add("data-Id", prp.PropertyId.ToString());
                            cbx.ID = "_cbx" + prp.PropertyId;
                            cbx.Text = prp.PropertyName;
                            cbx.ToolTip = prp.Description;
                            _plchForm.Controls.Add(cbx);
                            break;
                        case PropertyBL.PropertiesType.MultySelect:
                            var drp = new DropDownList();
                            drp.Attributes.Add("type", prp.PropertiyType.ToString());
                            drp.Attributes.Add("data-Id", prp.PropertyId.ToString());
                            drp.ID = "_drp" + prp.PropertyId;
                            drp.ToolTip = prp.Description;
                            drp.Items.Add(new ListItem(" انتخاب  " + prp.PropertyName, "null"));
                            foreach (var s in prp.Type.Trim().TrimEnd(';').Split(';'))
                                drp.Items.Add(new ListItem(s));
                            _plchForm.Controls.Add(drp);
                            break;
                    }
                _plchForm.Controls.Add(new Literal { Text = "<br/>" });
            }
        }

برای بایند کردن کنترل ها اینطور عمل می کنیم 

 

3- برای ذخیره 

 

                    #region AddPropertyValu


                    foreach (var c in _plchForm.Controls)
                    {
                        if (c.GetType().BaseType != typeof(WebControl) && c.GetType().BaseType != typeof(ListControl))
                            continue;
                        var contrl = ((WebControl)c);

                        switch (contrl.Attributes["type"])
                        {
                            case "0": //text
                            case "1": //textarea
                                var text = (TextBox)contrl;
                                PropertyValueBL.Add(text.Text, long.Parse(text.Attributes["data-Id"]), productId,
                                                    CatIdLvl3);
                                break;
                            case "2": //check box
                                var cbx = (CheckBox)contrl;
                                var property =
                                    PropertyBL.GetSingleById(long.Parse(cbx.Attributes["data-Id"]))
                                              .Type.Trim()
                                              .TrimEnd(';')
                                              .Split(';');
                                var val = cbx.Checked ? property[0] : property[1];
                                PropertyValueBL.Add(val, long.Parse(cbx.Attributes["data-Id"]), productId, CatIdLvl3);
                                break;
                            case "3": //multy select 
                                var drp = (DropDownList)contrl;

                                var value = drp.SelectedValue;
                                PropertyValueBL.Add(value, long.Parse(drp.Attributes["data-Id"]), productId, CatIdLvl3);
                                break;
                        }
                    }
                    #endregion
                    Helper.ShowAjax("عملیات با موفقیت انجام شد ", Page);

 

 

 

تو این روش من فقط textbox , dropdownlist , multy line text box , check box گذاشتم ولی شما می تونید به تایپ ها حتی یوزر کنترل های خودتون رو اضافه کنید مثلا یه یوزر کنترل برای پرداخت آنلاین یا هر چیز دیگه ای 

توضیحات بیشتر هم خواستید بفرمایید

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)