PDA

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



* joodi *
سه شنبه 18 اسفند 1388, 12:43 عصر
سلام

من میخوام کنترل های مختلفی رو به صورت داینامیک به صفحه اضافه کنم اول از جاوا اسکریپت استفاده کردم ولی یک مشکل هست ، می خوام اطلاعات مربوط به کنترل های اضافه شده را در یک فایل XML ذخیره کنم که متاسفانه با جاوا اسکریپت بلد نیستم :خجالت:

تصمیم گرفتم برای اضافه کردن کنترل ها از ajax استفاده کنم به این صورت که وقتی کاربر بر روی دکمه add textboxکلیک می کند یک label و یک textbox به صفحه اضافه شود، اگر بر روی دکمه add radiobutton کلیک کرد یک label و دو radiobutton به صفحه اضافه شود و الی آخر ... ولی هر بار که کنترل ها را به panel اضافه می کنم قبلی رو پاک می کنه و کنترل جدید را به جای آن جایگزین می کند! چی کار باید بکنم ؟ از این کد استفاده کردم:


panel1.controls.add(newtextbox)


ممنون میشم راهنمائی کنید.:قلب:

naeeme
سه شنبه 18 اسفند 1388, 13:50 عصر
شما اضافه کردن کنترلهای run time رو باید قبل از ساخته شدن صفحه انجام بدین. یعنی در زمان رخ دادن Page_Init

اینجا رو ببین:
http://barnamenevis.org/forum/showthread.php?t=91389

* joodi *
چهارشنبه 19 اسفند 1388, 20:41 عصر
از راهنمائیتون ممنون

ولی من می خوام کنترل ها بعد از فشار داده شدن دکمه مربوط به هر کنترل به صفحه اضافه بشه

یعنی وقتی روی دکمه افزودن textbox کلیک کرد textbox اضافه بشه وقتی روی دکمه افزودن label کلیک کرد label اضافه بشه و ..... مگر کدی که در Page_Init نوشته میشه قبل از load صفحه اجرا نمیشه؟ (کاش بشه یکی تفاوت PreInit و onInit و .... کامل توضیح بده)

یک کد مشابه از سایت asp.net گرفتم ولی می خوام اضافه کردن کنترل های مختلف رو بهش اضافه کنم از کجا باید بفهمم که دکمه ی افزودن کدوم کنترل زده شده؟ میتونید کمک کنید؟؟ خیلی واجبه:افسرده:

mmnoody2006
پنج شنبه 20 اسفند 1388, 19:21 عصر
دنبال این برو


LoadControl ("components/login.ascx");

* joodi *
پنج شنبه 20 اسفند 1388, 19:44 عصر
سلام
از توجه شما ممنون . میشه یک کم بیشتر توضیح بدید؟؟!!

Milad Mohseny
پنج شنبه 20 اسفند 1388, 23:42 عصر
ببين اين دو مثال به كارت مياد

<htm>
<head >
<script language="javaScript">
function CreateTable(colheader,noofrow,parentTag)
{

var newEl = document.createElement('TABLE');
var c=0;

newEl.setAttribute('cellPadding',4);
newEl.setAttribute('ID','tbl');
var tmp = document.createElement('TBODY');
colhd=colheader.split(";");
var noofcol=colhd.length;
newEl.appendChild(tmp);
var rowh=document.createElement('TR');
var srno=document.createElement('TH');
var srcol=document.createTextNode("SrNo");
srno.appendChild(srcol);
rowh.appendChild(srno);
for(k=0;k<noofcol;k++)
{
var thd=document.createElement('TH');
var theData = document.createTextNode(colhd[k]);
thd.appendChild(theData);
rowh.appendChild(thd);
}
tmp.appendChild(rowh);
for(i=0;i<noofrow;i++)
{
var row = document.createElement('TR');
var rowno=document.createElement('TH');
var colno=document.createTextNode(i+1);
rowno.appendChild(colno);
row.appendChild(rowno);
for(j=0;j<noofcol;j++)
{
var container = document.createElement('TD');
var theTextBox = document.createElement('INPUT');
theTextBox.setAttribute('TYPE','text');
theTextBox.setAttribute('ID',c);
container.appendChild(theTextBox);
row.appendChild(container);
//txtid.add(theTextBox);
c=c+1;

}
tmp.appendChild(row);
}
newEl.appendChild(tmp);
document.getElementsByName(parentTag)[0].appendChild(newEl);

}
</script>
<body>
<form name="f1">
<table>

</table>
<input type="button" id="Ck" value="Create Text Box " onClick="CreateTable('ID;NAME;ADDRESS;SEX',3,'f1');">
</form>

//To Test this u can call this function like

</body>
</head>

</htm>

يا

<%@ Page Language="C#‎‎‎" AutoEventWireup="true" CodeFile="AddRemoveJavascript.aspx.cs" Inherits="AddRemoveJavascript" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript">
function addElement() {
var ni = document.getElementById('myDiv');
var numi = document.getElementById('theValue');
var num = (document.getElementById('theValue').value - 1) + 2;
numi.value = num;
var newdiv = document.createElement('div');
var divIdName = 'my' + num + 'Div';
newdiv.setAttribute('id', divIdName);
newdiv.innerHTML = "Element Number " + num + " has been added! <a href=\"#\" onclick=\"removeElement(\'" + divIdName + "\')\">Remove the element &quot;" + divIdName + "&quot;</a>";

ni.appendChild(newdiv);
}
function removeElement(divNum) {
var d = document.getElementById('myDiv');
var olddiv = document.getElementById(divNum);
d.removeChild(olddiv);
}

</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input type="hidden" value="0" id="theValue" />
<p><a href="#" onclick="addElement();">Add Some Elements</a></p>
<div id="myDiv"> </div>

</div>
</form>
</body>
</html>

http://www.dotnetspider.com/forum/ViewForum.aspx?ForumId=22266
http://aspdotnetcodebook.blogspot.com/2009/03/how-to-create-control-at-runtime-using.html

* joodi *
جمعه 21 اسفند 1388, 09:26 صبح
ممنون دوست عزیز .:تشویق:

من چون می خوام بعدا اطلاعات مربوط به این کنترل های داینامیک رو در یک فایل xml ذخیره کنم نمی خواستم از javascript استفاده کنم .(البته حتما راهی داره ولی من بلد نیستم)

آیا راهی هست که بعد از افزودن کنترل های داینامیک به صفحه بتوان آن ها را با حفظ ترتیب و ردیفی که در آن قرار گرفته اند در یک فایل xml ذخیره کرد؟

Milad Mohseny
جمعه 21 اسفند 1388, 10:20 صبح
آیا راهی هست که بعد از افزودن کنترل های داینامیک به صفحه بتوان آن ها را با حفظ ترتیب و ردیفی که در آن قرار گرفته اند در یک فایل xml ذخیره کرد؟
خوب با js هم ميتوني با فايل xml كار كني اينارو ببين: (يا من بد متوجه شدم؟)
http://www.w3schools.com/XML/xml_examples.asp
http://www.codetoad.com/xml_javascripti_tutorial.asp
http://www.howtocreate.co.uk/tutorials/javascript/dombasics
http://www.xmlfiles.com/examples/

اگه دليل اينكه نميخواهي از js استفاده كني اينكه ممكنه كاربر js رو غير فعال كرده باشه و برنامت با خطا مواجه بشه بگو تا يه نمونه كد معرفي كنم تا اگه js غير فعال باشه به كاربر هشدار بده و به صفحه ديگه اي منتقل بشه. تو اكثر browser ها هم تست شده. :لبخندساده:

amirali_asp_net
جمعه 21 اسفند 1388, 10:37 صبح
بستگی داره چه نوع کنترل های بخواهی اگر کنترل های ASP.NET رو می خواهی اضافه کنی اضافه می شن به همون صورت که گفتی ، اما چون ViewState ندارن به راحتی با PostBack شدن صفحه از بین می روند (دلیل علمیشم سرچ بزن)

اگر کنترل HTML میخواهی بهترین کار استفاده از JQuery و جاوا اسکریپت هست که با یکسری متد های Static در کد صفحه ات , کارهای سمت سرور رو با این کنترل ها انجام بدی ...

* joodi *
جمعه 21 اسفند 1388, 11:17 صبح
من یک کم گیج شدم ، که از بین کنترل های HTML و کنترل های دات نت کدوم یکی رو باید استفاده کنم !

من می خوام یک نمونه فرم ساز کوچیک بنویسم که تا جائی که فهمیدم باید نوع و ویژگی (راست چین یا چپ چین و ...) کنترل هایی که کاربر به صفحه اضافه کرده در یک فایل xml یا database ذخیره بشه تا بعدا از این فرم آماده برای ثبت اطلاعات استفاده بشه .

حالا پیشنهاد دوستان چیه ؟ از کدوم یکی باید استفاده کنم ؟ با جاوا اسکریپت و کنترل های HTML یا سی شارپ و کنترل های دات نت؟

* joodi *
دوشنبه 24 اسفند 1388, 20:52 عصر
دوباره سلام

یک کنترل جالب پیدا کردم که مشکلم رو حل کرد و نیازی به ساختن دوباره ی کنترل ها در هر post back صفحه نداره !! dll کنترل و برنامه رو می ذارم شاید به درد کسی بخوره .

یک سوال هم داشتم چرا literal control رو اعمال نمی کنه؟ و اینکه چرا newtitle.BorderWidth =0
text box ها با هر بار کلیک از بین میره؟؟

مرسی