ハロの外部記憶インターフェイス

そろそろ覚える努力が必要かも…

SQL Server 2014への接続をIP Addressでする

SQL Serverへの接続をIP Addressにする方法

インストールしたばかりでは、基本「パソコン名\サーバー名」などでしか接続できません。
これをIPアドレスでできるようにするためにはSQL Server 構成マネージャーで設定が必要です。

SQL Server 構成マネージャー

SQL Serverネットワーク構成の「サーバー名」のプロトコルを選択します。
f:id:haronoid:20170707005035p:plain

TCP/IPが「無効」になっているので、「有効」にします

f:id:haronoid:20170707005051p:plain

タブの「IPアドレス」を選択し、最後の「IPAII」のTCPポートに「1433」を設定します。

f:id:haronoid:20170707005100p:plain

適用し、あとはSQL Serverを再起動します。
これからはIPアドレスで接続できるはず。

VS for Mac 版のASP.NET Core ページの文字化け

VS for MacでWebページの文字が化ける場合の対応

web.configのglobalization設定を追加

<configuration>
  <system.web>
	<globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8" />
  </system.web>
</configuration>

ページのmeta設定にutf-8を明記する。

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Prismやってみよう

最近、話題のPrismやってみようかと思ったので、まずは関連サイト確認

まずは、Prism!OpenSourceなのでGitHubに公開されてる。
github.com

Xamarin入門ブログを書いてくださる親切な人々

www.nuits.jp

www.nuits.jp

blog.okazuki.jp

とりあえず、こんなもんかな…
これから順番に読んでみよう

動的に追加した項目にイベントをバインドする。

動的に追加された要素は画面のイベントがバインドされていないため、イベントが動作しない。

そのため、追加したタイミングで新しくイベントをバインドする必要がある

var div = $("div");
div.append('<input id="input1" type="text" value="" />');
div.append('<input id="input2" type="text" value="" />');
div.append('<input id="input3" type="text" value="" />');

$("#injact_div").after($(div));

$('input', div).bind("keydown", function (e) {
  if (e.which == 13 )
  {
     alert($(this).attr("id") + ' = ' + $(this).val() );
  }
});

EnterキーがSubmitになるのを止める。

FormのInput要素からEnterキーを押下すると、デフォルトでSubmitが発生する。

止めるためには Formにdefaultbuttonとしてdummysubmitボタンを指定して何もさせないようにする。
cshtml

@using (Html.BeginForm("Update", "Home", FormMethod.Post, new {defaultbutton= "dummySubmit" }))
{
<input id="dummySubmit" type="submit" value="Dummy" onclick="return false;" style="display:none;" />
}

生成されたHTML
>||



|

thisより、何番目の要素かを確認する。

選択した行が何番目のRowかを確認する。

HTML

<ul>
	<li>1</li>
	<li>2</li>
	<li>3</li>
	<li>4</li>
	<li>5</li>
</ul> 

Script

$("ul li").click(function() {
	alert($("ul li").index(this)); 
}); 

HTML

<tr onclick="tr_click(this)"></tr>
<tr></tr>
<tr></tr>

Script

function tr_click(row) {
  alert($("tr").index(row));
}

モデルの一覧データのバインド

モデルの内部にある一覧を画面とモデルでバインドする方法

ViewModel

public class MyViewModel
{
  public Parent parent { get; set; };
  public List<Child> childlist {get; set;}
}
public class Parent {
  public string Name { get; set; }
}
public class Child {
  public string ParentName { get; set; }
  public string Name { get; set; }
}

Controller

public ActionResult Update(MyViewModel model)
{
  foreach (var item in from m in model.child{
    // 画面で設定された内容にアクセス出来る。
  }
}

View.cshtml

@@using (Html.BeginForm("Update", "Home", FormMethod.Post))
{
  <table>
    <tr>
      <th>ParentName</th>
      <th>ChildName</th>
    </tr>
  </table>
  @for (int i=0; i < Model.childlist.Count; i++)
  {
     <tr>
           <td >@Html.EditorFor(modelItem => Model.childlist[i].ParentName)</td>
           <td >@Html.EditorFor(modelItem => Model.childlist[i].Name)</td>
    </tr>
  }
}

実際生成されるhtml

<tr>
  <td>
    <input class="text-box single-line" id= "childlist_0____" 
                name= "childlist[0].ParentName" type= "text" value= "Jone" 
  </td>
  <td>
    <input class="text-box single-line" id= "childlist_0____" 
                name= "childlist[0].Name" type= "text" value= "Jone Jr" />
  </td>
</tr>
  <tr>
  <td>
    <input class="text-box single-line" id= "childlist_1____" 
                name= "childlist[1].ParentName" type= "text" value= "Jone" 
  </td>
  <td>
    <input class="text-box single-line" id= "childlist_1____" 
                name= "childlist[1].Name" type= "text" value= "harry" />
  </td>
</tr>
  1. バインディングとしてのポイントはnameの設定でchildlist[0]の形式になっていないとバインドがされない
  2. jQueryなどで動的にを増やす場合も、nameの命名規則さえ正しければ、Controler側では認識された。