سلام
دوستان من میخواستم یه سری کنترل در روی فرم درست کنم با توجه به فیلد های جدولی که دارم و بعد مقدار اون کنترل ها رو داخل بانک ذخیره کنم
من خودم با استفاده از DataList اینکارو کردم و کنترل ها ایجاد شده که اینم با استفاده از Databound مربط به دیتالیست اینکارو کردم ولی الان میخوام وقتی کاربر روی دکمه ذخیره ک بیرون از دیتالیسته
زد اطلاعات داخل کنترل ها در بانک ذخیره شود ولی هر کاری میکنم نمیشه
ممنون میشم راهنمایی کنید کارم فوری هستش
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 گذاشتم ولی شما می تونید به تایپ ها حتی یوزر کنترل های خودتون رو اضافه کنید مثلا یه یوزر کنترل برای پرداخت آنلاین یا هر چیز دیگه ای
توضیحات بیشتر هم خواستید بفرمایید
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)