ASP.NET(C#)からJavascriptへ配列を渡してJavascriptを実行したい。
サーバー側でデータ取得及び配列(ListArray型:多次元配列)にするまでは終了しました。
その後どうしたらいいか、さっぱりわかりません。。。
どなたかご教授お願い致します。
開発環境:VisualStudio2017
DB:Oracle
JavaScript
1///* =================================================== 2// * カレンダー生成 3// * ===================================================*/ 4function setCalendar(progressList) { 5 6 var yy, mm, column; 7 // yy,mmが未定義なら(つまり一番最初にページを開いたときに)そのときの年月を変数yy,mmに付与する 8 if (!yy && !mm) { 9 var yy = new Date().getFullYear(); 10 var mm = new Date().getMonth(); 11 mm = mm - (-1); // mmは前月を指してしまうのでプラス1してあげる(-(-1)はJavaScriptが足し算苦手なため) 12 } 13 var zdate = new Date(yy, mm - 1, 0); // 前月末 14 var tdate = new Date(yy, mm, 0); // 当月末 15 zedd = zdate.getDate(); // 前月末日 16 zedy = zdate.getDay(); // 前月末曜日 17 tedd = tdate.getDate(); // 当月末日 18 tedy = tdate.getDay(); // 当月末曜日 19 20 // カレンダーに埋める数字を配列daysに格納する(5行で済めば35要素、6行なら42要素) 21 var days = []; 22 23 // 前月末が土曜日以外(日曜日から0,1,2・・・土曜日が6) 24 if (zedy != 6) { 25 // 前月最終日曜日から月末曜日までの日付(for逆回しに注意) 26 for (var i = zedy; i >= 0; i--) { 27 days[zedy - i] = (zedd - i); 28 } 29 // 当月日付 30 for (var i = 1; i <= tedd; i++) { 31 days[zedy + i] = i; 32 } 33 // 当月末が35番目までに終了 34 if ((zedy + tedd) <= 34) { 35 // 翌月日付 36 for (var i = 1; i < 35 - zedy - tedd; i++) { 37 days[zedy + tedd + i] = i; 38 } 39 // 当月末が35番目を超えて終了 40 } else if ((zedy + tedd) > 34) { 41 // 翌月日付 42 for (var i = 1; i < 42 - zedy - tedd; i++) { 43 days[zedy + tedd + i] = i; 44 } 45 } 46 47 // 前月末が土曜日(何月であろうと5行で足りる) 48 } else if (zedy == 6) { 49 // 当月日付 50 for (var i = 1; i <= tedd; i++) { 51 days[i - 1] = i; 52 } 53 // 翌月日付 54 for (var i = 0; i < 35 - tedd; i++) { 55 days[tedd + i] = i + 1; 56 } 57 } 58 59 // DOM生成(いよいよ描画) 60 var out = "<table class='clsaln'>"; 61 62 out += "<caption>"; 63 out += "<div class='clsCalenderMonth'>" 64 // 今月へ戻るリンク 65 //out += "<a href='#' onclick='setCalendar();return false;'>今月 </a>"; 66 // 前月へ移動リンク 67 out += "<a href='#' yy='" + yy + "' mm='" + mm + "' onclick='backmm(this);return false;'>\< </a>"; 68 out += yy + '年' + mm + '月'; 69 // 翌月へ移動リンク 70 out += "<a href='#' yy='" + yy + "' mm='" + mm + "' onclick='nextmm(this);return false;'>\></a>"; 71 out += "</div>" 72 out += "</caption>"; 73 74 var youbi = ["日", "月", "火", "水", "木", "金", "土"]; 75 out += "<tr class='clsalnHeader'>"; 76 for (var i in youbi) { 77 out += "<td>" + youbi[i] + "</td>"; 78 } 79 80 // ここからさきほど作った配列daysの中身を展開していく 81 82 // columnセット 83 var column = ""; 84 85 // 行数を計算する 86 var row = days.length / 7; 87 // 行数分だけ回す 88 for (var i = 1; i <= row; i++) { 89 out += "<tr class='clsalnBody'>"; 90 // うまく説明できないが行の変動に対応できるように何とかして回す 91 for (var j = 7 * i - 6; j <= 7 * i; j++) { 92 // あとでいろいろいじれるように属性やイベントを混ぜておく 93 out += "<td class='clsTdLink' row='" + i + "' yy='" + yy + "' mm='" + mm + "' dd='" + days[j - 1] + "' onclick='show(this);return false;'>" + "<div class='clsDay'>" + days[j - 1] + "</div>" + "<div class='clsSetHosu'>" + column + "</div>" + "</td>"; 94 } 95 out += "</tr>"; 96 } 97 out += "</table>"; 98 99 // 最後にhtmlへどかっと渡す 100 document.getElementById("idResultMap").innerHTML = out; 101 //document.getElementById("idResultStep").innerHTML = out; 102 //document.getElementById("idResultWeight").innerHTML = out; 103 //document.getElementById("idResultWaist").innerHTML = out; 104} 105 106// 前月へ移動(年度をまたぐときはyyを調整する必要がある点に留意) 107function backmm(e) { 108 var yy = e.getAttribute('yy'); 109 var mm = e.getAttribute('mm'); 110 if (mm != 1) { 111 mm = mm - 1; 112 } else if (mm == 1) { 113 mm = 12; 114 yy = yy - 1; 115 } 116 setCalendar(yy, mm); 117} 118 119// 翌月へ移動 120function nextmm(e) { 121 var yy = e.getAttribute('yy'); 122 var mm = e.getAttribute('mm'); 123 if (mm != 12) { 124 mm = parseInt(mm) + 1; // mm-(-1)でも同じだがparseIntを使ってみた 125 } else if (mm == 12) { 126 mm = 1; 127 yy = parseInt(yy) + 1; 128 } 129 setCalendar(yy, mm); 130} 131 132// 日付をクリックしたときに日付をアラートさせる(年と月の拾い方、年またぎに注意) 133function show(e) { 134 var row = e.getAttribute('row'); 135 var yy = e.getAttribute('yy'); 136 var mm = e.getAttribute('mm'); 137 var dd = e.getAttribute('dd'); 138 // クリック対象が1行目かつ前月の日付 139 if (row == 1 && dd > 7) { 140 if (mm != 1) { 141 mm = mm - 1; 142 } else if (mm == 1) { 143 yy = yy - 1; 144 mm = 12; 145 } 146 } 147 // クリック対象が最終行かつ翌月の日付 148 if ((row == 5 || row == 6) && dd < 7) { 149 if (mm != 12) { 150 mm = parseInt(mm) + 1; 151 } else if (mm == 12) { 152 yy = parseInt(yy) + 1; 153 mm = 1; 154 } 155 } 156 disp(); 157}