2013-03-13 49 views
1

您好我有一個代碼,在我的ASP請求幾個小時從MySQL數據庫分割字符串(從C#功能)在斷裂的Javascript

C#代碼

 string cmd = "SELECT DepartureTime FROM dbtest"; 
     MySqlCommand mycmd = new MySqlCommand(cmd, conn); 
     MySqlDataReader dataReader = mycmd.ExecuteReader(); 

     while (dataReader.Read()) 
     { 
      times += dataReader.GetString(0) + "\n"; 
     } 
     dataReader.Close(); 

的Javascript

function SendForm() { 
     PageMethods.ConnectDatabase(OnSucceeded, OnFailed); 
     function OnSucceeded(msg) { 
      var vierkant = document.getElementById("Vierkant"); 
      var context = vierkant.getContext('2d'); 

      context.font = '15pt Calibri'; 
      context.fillStyle = 'blue'; 
      context.fillText('Departure Times bus X19:' + msg, 150, 100); 
     } 

當我在javascript中調用這個函數時,它給出了一行中的所有小時數

我喜歡有一個每個結果後打破我認爲這是足以p一個「\ n」在我的C#代碼

我該如何解決這個問題?

感謝


我試着做以下,但仍然沒科技工作

有什麼錯我的畫布或變量「味精」?

的Javascript:

var msg; 
    function Connect() { 
     PageMethods.ConnectDatabase(OnSucceeded, OnFailed); 

     function OnSucceeded(msg) 
     { 

      //Set context + Formatting 
      var context = document.getElementById("canvas").getContext('2d'); 
      context.font = '15pt Calibri'; 
      context.textAlign = "center"; 
      context.textBaseline = "top"; 
      context.fillStyle = 'blue'; 

      //Prepare textarea value to be drawn as multiline text 
      var textval = msg.value; 
      var textvalArr = toMultiLine(textval); 
      var linespacing = 25; 
      var startX = 0; 
      var startY = 0; 

      //Draw each line on canvas. 
      for (var i = 0; i < textvalArr.length; i++) { 
       context.fillText(textvalArr[i], x, y); 
       y += linespacing; 
      } 
     } 

     //Create an array where the <br/> tag splits the values. 
     function toMultiLine(text) { 
      var textArr = new Array(); 
      text = text.replace(/\n\r?/g, '<br/>'); 
      textArr = text.split("<br/>"); 
      return textArr; 


      /*var vierkant = document.getElementById("canvas"); 
      var context = vierkant.getContext('2d'); 
      //formatting 
      context.font = '15pt Calibri'; 
      context.fillStyle = 'blue'; 

      context.fillText('Departure Times bus X19:' + msg, 150, 100);*/ 
     } 

     function OnFailed(error) { 
      alert("failed"); 
     } 

    } 

HTML:

<form id="Form1" runat="server"> 

<input type="button" onclick="return Connect()" value="Bushours:" /> 

<canvas id="canvas" width="1900" height="200">Test<code>&lt;canvas&gt;</code> element. 
</canvas> 
+0

也許不是你的代碼中'\ n',你可以嘗試Environment.Newline? – Thijs 2013-03-13 15:17:38

+0

@Thijs - 作爲它的HTML 將代替\ n檢查我的回答 – 2013-03-13 15:18:27

回答

2

如果你想打破比使用<br/>代替\n

所以你的C#代碼將是這樣的:

times += dataReader.GetString(0) + "<br/>"; 

因爲\n不破得到解釋,但<br/>

有如何做到這一點在這個答案示例:HTML5 canvas ctx.fillText won't do line breaks?

+0

@Thijs - 是它的錯誤和糾正。 – 2013-03-13 15:21:40

+0

我嘗試添加+「
」;但每個結果後我看到
... – 2013-03-13 15:26:30

+0

@Eclectica_ - 檢查更新..當你在畫布上繪製文本(可能會有助於) – 2013-03-13 15:32:05