2015年5月14日木曜日

kendo ui treeview html5で表示

html側
        <script>
            $(document).ready(function () {

                function onSelect(e) {
                    //alert("Selecting: " + this.text(e.node));
                }

                //
                function processTable(data, idField, foreignKey, rootLevel) {
                    var hash = {};

                    for (var i = 0; i < data.length; i++) {
                        var item = data[i];
                        var id = item[idField];
                        var parentId = item[foreignKey];

                        hash[id] = hash[id] || [];
                        hash[parentId] = hash[parentId] || [];

                        item.items = hash[id];
                        hash[parentId].push(item);
                    }

                    return hash[rootLevel];
                }

                //
                var dataSource = new kendo.data.DataSource({
                    transport: {
                        read: { url: "./data/get_data.php", type:"GET", datatype: "json" }
                    },
                    batch: false,
                    schema: {
                        data: 'data'
                    }
                });

                dataSource.fetch(function () {
                    var data = this.data();
                    // tree for visualizing data                    $("#treeview").kendoTreeView({
                        dataSource: processTable(data, "id", "parent_id", 0),
                        loadOnDemand: false,
                        select: onSelect
                    });
                });

            });


        </script>

php側
if ($verb == 'GET') {

    $result = new DataSourceResult(DB_STRING, DB_USER, DB_PASSWORD);

    $columns = array('id', 'parent_id', 'text');

    $result = $result->read('テーブル名', $columns, null);

    header('Content-Type: application/json');
    echo json_encode($result, JSON_NUMERIC_CHECK);
}

remote data表示がうまく動作しなかったので
datasourceから、javascriptで、tree構成を作ってから、データを流し込んだ

2015年5月8日金曜日

ASP.NET 複数ファイルをdownloadする方法

ASP.NETのWeb Formで複数のファイルをdownloadする場合

通常は、1ファイルで Response.Writeと、Response.EndでOKですが
複数ファイルをdownloadする場合は、

            foreach (var rec in records) {


        // ストリームへエクスポート
                Stream stream = File.OpenWrite(Server.MapPath("~/excel/mdrReport_" + vFileCnt.ToString() + vFileName));
                BinaryWriter bw = new BinaryWriter(stream);
                bw.Write(pck.GetAsByteArray());
                bw.Close();

                vFileCnt++;
            }

            //javascriptでdownload
            //作成したxlsxファイルを表示する
            Response.Write("<script language=\"javascript\">");

            for (int i = 1; i < vFileCnt; i++) {
                Response.Write("window.open(\"http://localhost/test_mdr/excel/MdrReport_" + i.ToString() + vFileName + "\");");
            }
            Response.Write("</script>");