2018年1月30日火曜日

elFinder.NET

elFinderがPHPで作成されている。
これを.NETで焼き直ししたOSSがGitHubにあった。

ソースをImportさせてもらう。


2018年1月18日木曜日

Telerik MVC grid 項目にリンクを追加

Telerik MVC Grid項目にリンクを追加

リンクする項目を以下のように編集

col.Template(@<text>
   @Html.ActionLink(@item.BrunchCode.ToString(), "Brunch""Statistics"new { brunchid = @item.BrunchCode })  
 </text>)
  .ClientTemplate("<a href='/brunch/statistics/brunchid=#= BrunchCode#'>#=BrunchCode#</a>")
  .Title("Test"); 

上記のコードは <> が全角になっています。

元ネタ
https://www.telerik.com/forums/kendo-mvc-grid-actionlink-column





Telerik MVC Kendo Gridをdropdownの条件で表示を変更する

Telerik MVC Kendo Gridをdropdownの条件で表示を変更する

header部分にdrondownlistを配置する。
明細部分にgirdを配置する。
gridのdatasourceを以下の通りに配置

.DataSource(dataSource => dataSource
                    .Ajax()
                    .PageSize(5)
                    .Read(read => read.Action("Apply_Read", "APP", new { iSelect = ViewBag.SelectSearch }))
                    .Model(model => model.Id(p => p.申請No))
                )

ミソは、read.Action(アクション名, コントロール名, new {渡したいパラメータ})

これをコントロール側で受ける
public ActionResult Apply_Read([DataSourceRequest] DataSourceRequest request, string iSelect) {

            return Json(Get申請一覧(iSelect).ToDataSourceResult(request));
        }

        private List<ApprovalViewModel> Get申請一覧(string iSelect) {
           ココでレコードの取得
       }

iSelectはViewBagで渡しているので、view側で

            @(Html.Kendo().DropDownList()
                .Name("Search")
                .Events(ev => ev.Change("onSelect"))
                .DataTextField("Text")
                .DataValueField("Value")
                .BindTo(new List<SelectListItem>() {
                    new SelectListItem() {
                        Text = "下書き/差戻し",
                        Value = "0"
                    },
                    new SelectListItem() {
                        Text = "申請済/承認中",
                        Value = "1"
                    },
                    new SelectListItem() {
                        Text = "承認済",
                        Value = "2"
                    },
                    new SelectListItem() {
                        Text = "すべて",
                        Value = "9"
                    }
                })
                .HtmlAttributes(new { style = "width: 150px;" })
                .Value(ViewBag.SelectSearch)
            )

javascriptでeventを記述
 //検索条件の処理
            function onSelect(arg) { //検索が変更された場合、再表示を行う
                var dataItem = this.dataItem(arg.item);
                //alert("event :: select (" + dataItem.Text + " : " + dataItem.Value + ")");

                var url = $("#BaseUrl").val() + dataItem.Value;
                //alert("url= " + url);

                location.href = url;
            }

コントロール側でdropdownlistの値がurlのidとして受け取ったら
ViewBagにセットすれば、gridの表示側は制御できた。

get側
        public ActionResult APPIndex(string id) {
            ViewBag.SectionName = Session["SectionName"].ToString();
            ViewBag.UserName = Session["UserName"].ToString();

            if (id == null) {
                ViewBag.SelectSearch = "0";
            }
            else {
                ViewBag.SelectSearch = id;
            }

            return View();
        }

2018年1月15日月曜日

telerik MVC Gridのページング方法は、戻り値を
ToDataSourceResult(request) でラップすることで実装する。


using Kendo.Mvc.Extensions;
using Kendo.Mvc.UI;


        //申請一覧取得
        public ActionResult Approval_Read([DataSourceRequest] DataSourceRequest request) {

            return Json(Get申請一覧().ToDataSourceResult(request));
        }

        private IEnumerable<ApprovalViewModel> Get申請一覧() {
            using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["db"].ToString())) {

                string sql = "select * from v申請H where 申請タイプ in (1, 2, 3, 4) and 申請者社員ID = @申請者社員ID order by ID desc";
                conn.Open();
                var recs = conn.Query<v申請H>(sql,
                    new {
                        申請者社員ID = Session["UserID"].ToString()
                    });

                List<ApprovalViewModel> 申請ViewModels = new List<ApprovalViewModel>();

                foreach (var rec in recs) {
                    ApprovalViewModel 申請ViewModel = new ApprovalViewModel() {
                        申請者社員姓 = rec.申請者社員姓,
                        状態 = rec.申請状態名,
                        申請書名 = rec.申請タイプ名称,
                        申請No = rec.ID,
                        決済No = rec.決済No,
                        件名 = rec.件名,
                        発注先 = rec.発注先名,
                        金額 = rec.金額
                    };
                    申請ViewModels.Add(申請ViewModel);
                }

                return 申請ViewModels;
            }
        }

2018年1月11日木曜日

kamodo2 タブレットを外部モニターにするソフト

http://komado.abt.jp/index.html

iPad2が余っているので、外部モニタを探していました。
HostがWindowsなので、XDisplayかなぁ~と思っていましたが
日本製の外部モニタソフトがありました。

komado2ですが、レスポンスも良く、iPadだけではなく
Androidも対応しているので、タブレットモニタとしては有効だと思います。

※ABT株式会社が八王子市でした、自分の実家も八王子市なので
応援したいです。

Dual Display, iPad, Android, Tablet

2018年1月10日水曜日

Telerik MVC upload Select filesの文字を変更

        @(Html.Kendo().Upload()
            .Name("files")
            .Messages(m => m.Select("添付ファイル追加...."))
        )

元ネタ

2018年1月4日木曜日

Telerik MVC DropDownListのEventsに @Url.Content("~/SDL/Week/!") を含むと上手く動作しない

Telerik MVC DropDownListのEventsに @Url.Content("~/SDL/Week/!")
を含むと上手く動作しない

.Events(e => e.Change("onChange"))

<Script>
  function onChange(e) {
                  var dataItem = this.dataItem(e.item);
            //alert("event :: select (" + dataItem.Text + " : " + dataItem.Value + ")");

            var url = $("#BaseUrl").val() + dataItem.Value;
            //alert("url= " + url);
           
            location.href = url;
}
</script>

<input type="hidden" id="BaseUrl" Value=@Url.Content("~/")>

JavaScript内に @Url.Contentが有るとNGになったので
hidden項目から値を取得するように変更した。