XML:::...שאלה קטנה...:::XML

XML:::...שאלה קטנה...:::XML

יש לי string שמכיל XML, ואני רוצה להציג אותו על הweb form כמו שהIE מציג XML (כמו עץ בצבעים). - רק על ריבוע מתוך ה-WebFrom לא על כולו. ניסיתי עם IFRAME אבל הוא דורש שם של קובץ ב-src ואני לא רוצה לשמור את הstring בקובץ. יש רעיונות?????
 

nattygur

New member
היי, תמשיכי עם Iframe. תעבירי את

ה XML בשדה נסתר \ משתנה לדף הראשי. תשתמי ב Client script בכדי להגדיר כי ה InnerHTML של ה BOBY של ה IFRAME הוא הטכסט אשר העברת ובא לציון גואל ...
 
לא ממש הבנתי...

עד עכשיו כתבתי כך:
<iframe id=OutputFrame style="WIDTH: 530px; HEIGHT: 268px" src="<%=FileName%>">​
ה-XML נמצא במשתנה מסוג string בשם XMLstring, אז ניסיתי לשנות את ההגדרה של ה-iframe אבל אין שם innerHTML, כתבתי בכל זאת אבל אין תגובה, כך:
<iframe id=OutputFrame style="WIDTH: 530px; HEIGHT: 268px" innerHTML="<%=XMLstring%>">​
מה עושים?
 

yuval k

New member
לא...

את ה-innerHTML את משנה דרך JavaScript:
<script language="JavaScript"> function setContent(sXML) { document.getElementById("outputFrame").document.body.innerHTML = sXML; } </script> <iframe id="outputFrame" style="width: 530px; height: 268px" />​
 

nattygur

New member
צריך Script

<iframe id="nat" name="nat"></iframe> .... function window_onload() { window.document.all["nat"].contentwindow.document.body.innerhtml = "bobo" // or your variable. }​
 
הבעיה היא

אני יוצרת את הstring בקובץ cs בפונקציה page_load. אפשר לעשות 2 פונקציות של page_load אחת ב-cs ואחת ב-js? אם כן, איזה פונקציה נקראת קודם? אם לא, יש אפשרות לשנות את ה-innerHTML מתוך ה-cs? תודה לכולם
 
ניסיתי... ../images/Emo26.gif

הפכתי את הiframe לקונטרול צד שרת, ובקובץ cs אחרי שגמרתי ליצור את הxml כתבתי כך:
OutputFrame.InnerHtml=XMLstring;​
אבל לא קיבלתי כלום ב-iframe. יש למישהו מושג למה? או אולי דרך אחרת? תודה שוב
 

gilad g

New member
לא..

אל תהפכי אותו לפקד צד שרת... אם ה-string הוא בצד שרת, תצטרכי להעביר אותו לצד לקוח:
RegisterClientScriptBlock("myscript","<script language=javascript>var myXML = '"+myServerSideXMLString+"'</script>");​
ואז להגדיר את הפונקציה ואת האירוע ב-onload (צד לקוח):
<script language="javascript"> document....myframe...innerHTML = myXML; </script> <body onload="doSomething();" >​
"אפשר לעשות 2 פונקציות של page_load אחת ב-cs ואחת ב-js?" ברור. אין כל קשר בין אחת לשניה. "אם כן, איזה פונקציה נקראת קודם?" Page_Load (ב-#C) היא צד שרת, והשרת תמיד מעבד את הדף לפני הלקוח... לכן היא נקראת ראשונה.
 

gilad g

New member
תיקון לקוד:

<script language="javascript"> function doSomething(){ document....myframe...innerHTML = myXML; } </script> <body onload="doSomething();" >​
 
משהו לא ברור לי

איפה אני כותבת את זה: RegisterClientScriptBlock("myscript","<script language=javascript>var myXML = '"+myServerSideXMLString+"'</script>"); האם במקום myScript אני צריכה לכתוב את שם הפונקציה (לדוגמא doSomething)? ושאלה אחרונה, למה כשהשתמשתי ב-FileName לא היתי צריכה לעשות את זה ועכשיו כן? תודה רבה מאד
 
ניסיתי מליון אפשרויות

חיפשתי ב-MSDN ועדיין הiframe ריק. זו האפשרות האחרונה שניסיתי: בקובץ cs אחרי שיש לי את הXML כתבתי כך:
string scriptString="<script language=javascript>"; scriptString+="function InsertXML(){"; scriptString+="document.getElementById(OutputFrame).document.body.innerHTML ='"; scriptString+=XMLstring+"';"; scriptString+="}</script>"; RegisterClientScriptBlock("clientScript",scriptString);​
ובקובץ aspx כתוב כך:
<body onload="InsertXML();"> וההגדרה: <iframe id="OutputFrame" style="WIDTH: 530px; HEIGHT: 268px"></iframe>​
תודה לכל העוזרים
 

nattygur

New member
כי את צריכה להשתמש ב contentwindow

window.document.all["nat"].contentwindow.document.body.innerhtml = "bobo" // or your variable​
 
ניסיתי גם:

string scriptString="<script language=javascript>"; scriptString+="function InsertXML(){"; scriptString+="window.document.all['OutputFrame'].contentwindow.document.body.innerhtml = 'bobo'"; scriptString+="}</script>";​
כמו שאתה כתבת, ואפילו עם קבוע ולא משתנה, ועדיין אותה צרה!
 

nattygur

New member
OK, Lets try another approach

this code works for me : check upper / lower case ! <%@ Page language="c#" Codebehind="MyIFrame.aspx.cs" AutoEventWireup="false" Inherits="WebApplication22.MyIFrame" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > <html> <head> <title>MyIFrame</title> <meta name="GENERATOR" Content="Microsoft Visual Studio 7.0"> <meta name="CODE_LANGUAGE" Content="C#"> <meta name="vs_defaultClientScript" content="JavaScript"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> <script id=clientEventHandlersJS language=javascript> <!-- function window_onload() { window.document.all["nat"].contentWindow.document.body.innerHTML = "bobo"; } //--> </script> </head> <body MS_POSITIONING="GridLayout" language=javascript onload="return window_onload()"> <iframe name="nat" id="nat"> </iframe> <form id="MyIFrame" method="post" runat="server"> </form> </body> </html>
 

gilad g

New member
כמו שהראיתי לך,

את מכניסה אותו למשתנה צד לקוח מסוג מחרוזת (עם RegisterClientScriptBlock).
 
זה לא הולך ../images/Emo101.gif

מה יהיה? בקובץ cs כתבתי:
RegisterClientScriptBlock("myscript","<script language=javascript>var myXML = '"+XMLstring+"'</script>");​
ובקובץ aspx החלפתי את "bobo" ב- myXML.... מה עכשיו? אני ממש מסתבכת בדברים פשוטים, אוף!
 
למעלה