PDA

View Full Version : سوال: افزودن کنترل ها به صورت انلاین



rezaei manesh
یک شنبه 20 فروردین 1391, 18:39 عصر
سلام
من می خوام بعضی از ایتم هام رو ب صورت انلاین با توجه به نیاز کاربر خودش اضافه کنه و درونش تایپ کنه و بعد از زدن دکمه تایید من بتونم از ایتم های وارد شده استفاده کنم درست مثل این سایت در فرم ثبت نام و در قسمت سوابق تحصیلی با زدن کلید+ و - کنترل ها بدون رفرش صفحه ایجاد می شن

http://parscms.com/Web-Master/استخدام-وبمستر-مدیر-سایت10166.html

ghbn1362
شنبه 26 فروردین 1391, 22:26 عصر
خوب بستگی داره چی می خواهید اضافه کنید
1. یک شی

System.Web.UI.WebControls.TextBox textBox = new TextBox();
this.Controls.Add(textBox);


2. یک کنترل

Control UserControl = LoadControl("~/Controls/login.ascx");
this.Controls.Add(UserControl);


اگر چند فیلد می خواهید اضافه نماید روش 2 بهترین روش است به وسیله FindControl هم می توانید به اشیای دسترسی یابید البته اگر تعداد نا مشخص است در صورت مشخص بودن نامی که به آن می دهید آن را قابل دسترس می نماید.

d_derakhshani
یک شنبه 27 فروردین 1391, 10:19 صبح
در مثالی که شما نشون دادید، این عمل کامل ClientSide هست. پس هیچ کد asp.net لازم نیست.
کافیهبا Jquery فیلدها تو بسازی و به سرور پاس بدی.
اینجا شما دو مسئله دارید. یک چگونه فیلد بسازید دو چگونه به سرور پاس بدید:
برای ساخت فیلد ها بهتره از تابع Clone استفاده کنید. container اصلی در بر گیرنده کنترل رو پیدا کنید و از روش Clone کنید بعد به insertAfter اونو درج کنید.(البته می تونید به صورت دستی و تکست هم فیلد بسازید اما اگه قالب رو عوض کنید باید برید تکست ها رو هم دستکاری کنید و مشکل دوم اینکه حجم صفحه تون بالاتر میره)
اما مشکل در ایجاد id برای هر کنترل هست تا بشه باش سمت سرور بش دسترسی پیدا کرد.
مثال: برای Html زیر:


<div class="clear" id="c">
<div id="controls">
<input type="text" id="text-1" />
</div>
</div>

اسکریپ زیر قسمت controls رو clone می کنه و id مربوط به text-1 رو می کنه text-2(این عمل برای تمام کنترلها انجام میشه)


$("#controls").clone().insertAfter($("#c").children()).find("*").attr("id", function () {
var id = $(this).attr("id");
var temp = new Array();
temp = id.split('-');
$(this).attr("id", temp[0] +"-"+ (temp[1] * 1 + 1));
});

در یک hiddenfield تعداد سطرها رو نگهدارید.
حال برای خوندن سمت سرور:

Request.Form["text-1"]

از روی تعداد سطر در حلقه می تونید متوجه بشید تا چند رکورد رو باید بخونید

rezaei manesh
یک شنبه 27 فروردین 1391, 18:38 عصر
سلام
ممنون دوستان
بله من هم می خوام مثل اتچ کردن گوگل درست کنم بدون اینکه صفحه پست بک بشه

d_derakhshani
یک شنبه 27 فروردین 1391, 19:41 عصر
خوب کد کاملش رو براتون توضیح دادم