PDA

View Full Version : ساخت کنترل های داینامیک شبیه مدیریت پیوندهای وبلاگ بلاگفا



maktab
یک شنبه 17 دی 1391, 00:09 صبح
سلام.
من در مورد ساختن کنترل بصورت داینامیک جستجو کردم چند تاپیک در همین انجمن و چند نمونه در سایت های مختلف پیدا کردم. بعضیا اومدن از جاوا اسکریپت استفاده کردن بعضیا هم از کدهای سی شارپ و ViewState و...

ولی متاسفانه هیچکدام به درد کار من نخوردن. من چنین کاری میخوام انجام بدم. اگر ممکنه دوستان راهنمایی کنند.
چیزی شبیه به مدیریت پیوندهای وبلاگ بلاگفا میخوام. در ابتدا فقط دوتا تکست باکس هستن (عنوان پیوند و آدرس) بعد وقتی بر روی آخرین تکست باکس کلیک میشه خود به خود دوتای دیگه ایجاد میشه. همچنین امکان درج دوتکست باکس (خط جدید) در ابتدای فهرست و در خط جاری هم وجود داره.
خب قبول دارم باید برای چنین کاری وقت گذاشت. منم کد آماده نخواستم. سناریو کار را گفتم تا دقیقا بگم چی نیاز دارم.

حالا چیزی که در کار با آن بش پی بردم انگار برای این کار از جاوا اسکریپت استفاده شده ولی چطوری؟ اصلا درست متوجه شدم؟ چطوری میشه درست کرد بعد از مقادیرش استفاده کرد؟ (چون درست کردنش که مشکلی نیست)

mohsen_f_b
یک شنبه 17 دی 1391, 09:35 صبح
سلام

شما با استفاده از کنترل داینامیک در هر زمان می توانید بروی صفحه هر شی بخواهید با هر ID اضافه نمایید. و زمان ثبت صفحه را با توجه به FindControl می توانید به تمامی اجزا دست پیدا کنید و در بانک ذخیره نمایید. بنده بلاگفا را ندیده ام و یک چیزی در همین زمینه با توضیحات شما قبلا نوشته ام. اگر نیاز به توضیح کاملتری داشتید بفرمایید بررسی دقاق انجام بدهم و پاسخگوی شما باشم.

موفق باشید

sh-eng
یک شنبه 17 دی 1391, 10:45 صبح
یه جا دیدم با user control اینو طراحی کرده بودن

mohsen_f_b
یک شنبه 17 دی 1391, 10:50 صبح
سلام

این کد جاوا هستش که بلاگفا داره استفاده می کنه.


var intCount=1;
var iLine =1;
function createline()
{
intCount++;
document.getElementById ("lcount").value=intCount;
myd=document.createElement ("DIV");
myd.innerHTML ="<div class=\"dvt\"><input name=\"txtTitle" + intCount + "\" type=\"text\" maxlength=\"90\" id=\"txtTitle" + intCount + "\" onfocus=\"linef(" + intCount + ")\" class=\"Textbox\" style=\"width:98%;\" /></div><div class=\"dvl\"><input name=\"txtUrl" + intCount + "\" type=\"text\" onfocus=\"linef(" + intCount + ")\" maxlength=\"120\" id=\"txtUrl" + intCount + "\" class=\"Textbox\" style=\"width:98%;\" /></div>";
document.getElementById ("newl").appendChild ( myd);

dynaframe();


}
function linef(il)
{
iLine=il;
if ( il> intCount -2)
createline();
}
function newline()
{
createline();
var ol=1;
for (var i=intCount-1;i>=2;i--)
{
ol=i-1;
document.getElementById ("txtTitle" + i ).value =document.getElementById ("txtTitle" + ol ).value;
document.getElementById ("txtUrl" + i ).value =document.getElementById ("txtUrl" + ol ).value;
}
document.getElementById ("txtUrl1" ).value ="";
document.getElementById ("txtTitle1" ).value ="";
}
function insertline()
{
createline();
var ol=1;
iLine=iLine+1;
for (var i=intCount-1;i>iLine;i--)
{
ol=i-1;
document.getElementById ("txtTitle" + i ).value =document.getElementById ("txtTitle" + ol ).value;
document.getElementById ("txtUrl" + i ).value =document.getElementById ("txtUrl" + ol ).value;
}
document.getElementById ("txtUrl" +iLine ).value ="";
document.getElementById ("txtTitle" + iLine ).value ="";
document.getElementById ("txtTitle" + iLine ).focus();
}





حالا بررسی بیشتر با خود شما.
موفق باشید

maktab
یک شنبه 17 دی 1391, 11:53 صبح
آقا محسن خیلی لطف کردی :قلب:

ولی من الان وقتی از آن استفاده میکنم و مثلا تابع newline را فراخونی میکنم اخطار زیر را میده:



Microsoft JScript runtime error: 'document.getElementById(...)' is null or not an object


اگر میشه بفرماید نحوه درست استفاده از آن به چه شکلیه؟

mohsen_f_b
یک شنبه 17 دی 1391, 12:50 عصر
سلام

یک Function هستش به نام dynaframe(); در createline() که اونم نیازه برید در بلاگفا و در سورس صفحه پیداش کنید و قرار بدهید. به احتمال زیاد درست بشه. دقیق بررسی نکردم، فقط تیکه کدش رو واستون گذاشتم که دستتان بیاد به چه سبکی باید کار کنید. یکم در صفحه وسورس بالا پایین کنید کل کار دستتان میاد. وقت کنم بازهم بررسی می کنم، دقیقا بهتون می گم.

Function dynaframe



function dynaframe()
{
if (parent.document.getElementById('frameleft') == null) return;
if (parent.document.getElementById('frameleft').conte ntWindow.document.body.scrollHeight>500)
parent.document.getElementById('frameleft').height = parent.document.getElementById('frameleft').conten tWindow.document.body.scrollHeight +16;
else
parent.document.getElementById('frameleft').height =500;
}
function resetframe() { if (parent.document.getElementById('frameleft') == null) return; parent.document.getElementById('frameleft').height = 500; }
if (window.addEventListener)
{
window.addEventListener("load", dynaframe, false);
window.addEventListener("unload", resetframe, false);
}
else if (window.attachEvent)
{
window.attachEvent("onload", dynaframe);
window.attachEvent("onunload",resetframe );
}



راستی باید صفحه و نام گذاری اجزای صفحه مانند همون سایت باشه تا این کدها درست کار کند.

موفق باشید