webForumDet fria alternativet

Fundering om webservice och updateringar till website

.NET

15 svar · 1 534 visningar · startad av saw

Medlem sedan mars 20011 880 inlägg
Frågan#1

Jag vet inte om jag är fel ute, men jag har tanken på att den webservice som jag nu jobbar med skall bl a vara till för att uppdatera min databas på min website via ett windows-gränsnitt.

Tack vare fin hjälp, så har jag kommit en bra bit på vägen.
Det jag funderar över är att jag använder mig bl a av aspnet_client på min wesite(en HTML-deitor).

Om jag nu via min webserver plockar ner det till min windows-applikation, hur blir det då med html-tagarna?
Om jag sedan vill uppdatera detta vad händer då?
Bör jag ha en RichTextBox eller vilket allternativ finns det?

Tacksam för svar eller andra tankar.
:stud

Medlem sedan dec. 19996 721 inlägg
#2

"aspnet_client"=HTML-editor?

Normalt sett är "aspnet_client" ASP.NETs supportfilsmapp, och inget annat.

Antar att du vill kunna redigera HTML-fält. I så fall får du använda en dylik editorkontroll (t.ex. http://www.netrixcomponent.net/) eller så lägger du in en WebBrowser-kontroll och en html-sida med lämplig editor (fckeditor el. dyl.) och kommunicerar via ObjectForScripting.

Medlem sedan mars 20011 880 inlägg
#3

Tack jag skall kolla detta.

Medlem sedan mars 20011 880 inlägg
#4
WebBrowser-kontroll och en html-sida med lämplig editor 
(fckeditor el. dyl.) och kommunicerar via ObjectForScripting

Hur skulle detta se ut??

Medlem sedan dec. 19996 721 inlägg
#5

1. Lägg en WebBrowser-kontroll på ett Form.
2. Skapa en HTML-sida med en lämplig Rich Edit-kontroll på, t.ex. FCKEditor
3. Skapa en liten kommunikationsklass som tar emot kommandon från HTML-sidan

[ComVisible]
public class MinLillaKlass
{
   public void SparaTexten(string texten)
   {
      .......kod som sparar texten
   }
}

4. Sätt WebBrowser-kontrollens ObjectForScripting-property till en instans av din klass (browser.ObjectForScripting=new MinLillaKlass())
5. Låt ett Javascript på HTML-sidan säga till din applikation att nu är det dags att spara. (window.external.SparaTexten(textvalue))

Medlem sedan mars 20011 880 inlägg
#6

Jag hittade ett väldigt bra exempel på http://www.codeproject.com/cs/miscctrl/editor_in_windows_forms.asp
Men jag fick ett problem med en gång, jag skulle ha en referens till MSHTML och hittade den dll-filen i system32, men jag var inte f-n till att sätta den refferensen.
Hur gör jag???

Medlem sedan mars 20011 880 inlägg
#7

Det stora problemet nu är ju att få in texten mellan <textarea> taggarna.
Finns det något smart sätt?
Jag har försökt med att

string startTag = "";
string endTag = "";

 startTag= "<html><head><title></title><head>"+
	            "<script language="Javascript1.2"><!-- "+
	            "_editor_url = "HTMLArea/";    "+                 
	            "var win_ie_ver = parseFloat(navigator.appVersion.split("MSIE")[1]);"+
	            "if (navigator.userAgent.indexOf('Mac')        >= 0) { win_ie_ver = 0; }"+
	            "if (navigator.userAgent.indexOf('Windows CE') >= 0) { win_ie_ver = 0; }"+
	            "if (navigator.userAgent.indexOf('Opera')      >= 0) { win_ie_ver = 0; }"+
	            "if (win_ie_ver >= 5.5) {"+
	            " document.write('<scr' + 'ipt src="' +_editor_url+ 'editor.js"');"+
	            " document.write(' language="Javascript1.2"></scr' + 'ipt>');"+
	            "} else { document.write('<scr'+'ipt>function editor_generate() { return false; }</scr'+'ipt>'); }"+
	            " // --></script>"+
                "</head><body>"+
                "<script language='JavaScript1.2' defer>"+
		        " editor_generate('Inlagg');"+
		        "</script><textarea rows='13' name='Inlagg' cols='52'>";

Detta borde ju innebära att jag skulle kunna göra

webBrowser1.DocumentText = startTag + "Nu skall vi se vad detta kan bli " + endTag;

..och istället för min text, lägg in innfo ifrån databasen, men jag får en massa
error (röda streck) i min startTag (javascriptet).
Finns det något bättre sätt att lösa detta på?

Medlem sedan dec. 19996 721 inlägg
#8

saw skrev:

..och istället för min text, lägg in innfo ifrån databasen, men jag får en massa
error (röda streck) i min startTag (javascriptet).
Finns det något bättre sätt att lösa detta på?

Problemet är ju att du måste skriva strängen korrekt, och till exempel "escapa" citationstecknen ( t.ex. vid <script language="Javascript1.2">)

Medlem sedan mars 20011 880 inlägg
#9

Naturligtvis har du rätt, när jag nu har gjort detta, så har ju de "röda strecken" försvunnit.
Men nu dyker det upp ett annat problem. Visual Studio Just In Time debuger säger att
ett object förvänntas. När jag sedan gör detta står det "körningsfel i jscript.

<html><head><title></title><head> <script language="Javascript1.2">
<!--  _editor_url = "HTMLArea/";  var win_ie_ver = parseFloat(navigator.appVersion.split("MSIE")[1]);  
if (navigator.userAgent.indexOf('Mac')        >= 0) { win_ie_ver = 0; }  
if (navigator.userAgent.indexOf('Windows CE') >= 0) { win_ie_ver = 0; }  
if (navigator.userAgent.indexOf('Opera')      >= 0) { win_ie_ver = 0; }  
if (win_ie_ver >= 5.5) {  document.write('<scr' + 'ipt src="' +_editor_url+ 'editor.js"');  
document.write(' language="Javascript1.2"></scr' + 'ipt>'); } else 
{ document.write('<scr'+'ipt>function editor_generate() { return false; }</scr'+'ipt>'); } // --></script>
</head><body><script language="JavaScript1.2" defer>  editor_generate('Inlagg');  
</script><textarea rows="13" name="Inlagg" cols="52">
Nu skall vi se vad detta kan bli </textarea></body></html>

Någon ide? Jag har skickat med "orginalfilen" så att du kan se hur den ser ut,
jag ser ingen skillnad mot den kod jag har skrivit in.

Medlem sedan mars 20011 880 inlägg
#10

Jag försöker också med allternativa lösningar.

wWeb = webBrowser1.Document.GetElementById("Inlagg");
 wWeb.InnerHtml = "HEJA";//här är felet

..men som vanligt error: Objectsreferensen har inte angets till en instans av ett object.
Jag vet faktist inte vad som blir fel där???

Medlem sedan dec. 19996 721 inlägg
#11

saw skrev:

Jag försöker också med allternativa lösningar.

wWeb = webBrowser1.Document.GetElementById("Inlagg");
 wWeb.InnerHtml = "HEJA";//här är felet

..men som vanligt error: Objectsreferensen har inte angets till en instans av ett object.
Jag vet faktist inte vad som blir fel där???

Det finns inget element med id="Inlagg"

Medlem sedan mars 20011 880 inlägg
#12

Jo det gör det problemet är wWeb.InnerHtml = "HEJA"; När jag debuggar(stepp in) så
säger han att det inte finns InnerHtml .
Om detta kunde lyckas, så vore det ju bra mycket enklare.

Medlem sedan dec. 19996 721 inlägg
#13

Man måste ge browsern tid att läsa in dokumentet, innan man kan komma åt objekten. Du får ett DocumentCompleted-event när den är klar. Du har alltså några alternativ;

1. Sätt värdet direkt i HTML:en (bör ju vara enklast)
2. Vänta på eventet
3. Hämta in värdet från andra sidan, dvs. via Javascript.

Medlem sedan mars 20011 880 inlägg
#14

Nu börjar det att bli intressant, men jag får lite error:
Så här ser det ut nu:

private void Editering()
        {
            try
            {
                webBrowser1.Url = new Uri(Application.StartupPath + @"\HTMLfil\Index.html");
            }
            catch (Exception fel)
            {
                MessageBox.Show(fel.Message + " " + fel.Source, "Error i Editering");
            }
            finally
            {
                Info.Text = "Initiering av HTML-dokument av klart!";
            }
        }

private void webBrowser1_DocumentCompleted(object sender, 
WebBrowserDocumentCompletedEventArgs e)
        {
            
            try
            {
                string sText = "Blir nu detta <b>bra?</b>";
                webBrowser1.Document.GetElementById("Inlagg").InnerHtml = sText;
        }
        catch (Exception fel)
        {
            MessageBox.Show(fel.Message + " " + fel.Source, "Error i DocumentCompleted");
        }
        finally
        {
            Info.Text = "Hämtmtning av klart!";
        }
        }

Jag får följande fel:

Objectsreferensen har inte angets till en instans av ett object
//nästa error
Undantag från HRESULT:0x800A0259 System.Windows.Forms

Om jag inte harmed några html-formateringar i sText, då får jag bara det ena
felmedelandet, och texten syns som det skall. Det är när jag har med HTML-
formateringar som det andra errot kommer.

Vad tror du?

Medlem sedan mars 20011 880 inlägg
#15

Om jag ändrar till:

webBrowser1.Document.GetElementById("Inlagg").InnerText = sText;

så får jag med alla HTML-formateringar, men jag får likväl det förste errot.

Medlem sedan dec. 19996 721 inlägg
#16

Prova med att temporärt ta bort editorkoden. Tänk på att editorn eventuellt tar bort textarea-elementet och ersätter det med ett hidden-fält.

268 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
133 ms — ändringar (db)