jQuery Gantt如何在Visual Studio中建立一個新的ASP.NET專案

roffey發表於2021-02-23

jQuery Gantt Package是一個真正的跨平臺,基於HTML5 / jQuery的本地實現,具有2個不同的gantt小部件,可滿足您所有基於gantt的視覺化需求。還帶有ASP.NET WebControl和MVC擴充套件,可輕鬆整合到現有應用中。

在Visual Studio中建立一個新的ASP.NET專案:

VS 2012 :FILE --> New --> Project --> Installed --> Templates --> Other Language --> TypeScript,建立一個專案。

甘特包包括必要的甘特TypeScript介面,以幫助你開發你的Web應用程式,就像其他型別安全語言一樣,編譯時檢查。

1) Gantt Widget原始碼JS檔案

首先,你需要甘特小部件所需的JS原始檔。這些檔案在<安裝路徑>/Src資料夾中。把這個資料夾複製到上面的Project資料夾裡面(雖然這個資料夾的大小非常大,但是它包含了所有Themes、locales等所需要的CSS等,並不是所有的CSS都會被載入到你的頁面裡面)。

繼續刪除這個Src資料夾裡面的bin資料夾。

然後在專案的解決方案資源管理器中點選 "顯示所有檔案 "工具條項來顯示這個新包含的Src資料夾,並將其包含在專案中。

jQuery Gantt如何在Visual Studio中建立一個新的ASP.NET專案

2)實用JS檔案樣本

一些帶有實用功能的JS檔案,可以在網格中進行內嵌編輯等,這些檔案在<install path>/Samples/Scripts資料夾中。將上述安裝路徑中的Scripts資料夾的內容複製到你的專案資料夾中的Scripts資料夾中(當你建立一個新專案時,專案資料夾中會自動建立一個Scripts資料夾)。
然後按照上一步的步驟將新新增的指令碼檔案包含到你的專案中。

3) JSON資料樣本

建立一個SampleData.json檔案,其中包含要在甘特圖中顯示的示例任務列表。

SampleData.json內容:

[{
    "Name" : "Task 1",
    "ID" : 1,
    "StartTime" : "2012-02-02T00:00:00Z",
    "Effort" : "8:00:00",
    "Description" : "Description of Task 1"
},
{
    "Name" : "Task 2",
    "ID" : 2,
    "PredecessorIndices" : "1",
    "StartTime" : "2012-02-03T00:00:00Z",
    "Effort" : "16:00:00",
    "Description" : "Description of Task 2"
},
{
    "Name" : "Task 3",
    "ID" : 3,
    "StartTime" : "2012-02-02T00:00:00Z",
    "Effort" : "1.12:30:00",
    "ProgressPercent" : 90,
    "Description" : "Description of Task 3"     
},
{
    "Name" : "Child Task 1",
    "ID" : 4,
    "IndentLevel" : 1,
    "StartTime" : "2012-02-03T00:00:00Z",
    "Effort" : "8:00:00",
    "ProgressPercent" : 75,
    "Description" : "Description of Task 3/Child Task 1"
},
{
    "Name" : "Child Task 2",
    "ID" : 5,
    "IndentLevel" : 1,
    "PredecessorIndices" : "4+8",
    "Description" : "Description of Task 3/Child Task 2"
},
{
    "Name" : "Grand Child Task 1",
    "ID" : 6,
    "IndentLevel" : 2,
    "StartTime" : "2012-02-03T00:00:00Z",
    "Effort" : "8:00:00",
    "Description" : "Description of Task 3/Child Task 1/Grand Child 1"
},
{
    "Name" : "Grand Child Task 2",
    "ID" : 7,
    "IndentLevel" : 2,
    "StartTime" : "2012-02-03T00:00:00Z",
    "Effort" : "16:00:00",
    "Description" : "Description of Task 3/Child Task 1/Grand Child 2"
},
{
    "Name" : "Child Task 3",
    "ID" : 8,
    "IndentLevel" : 1,
    "StartTime" : "2012-02-02T00:00:00Z",
    "Effort" : "16:00:00",
    "Description" : "Description of Task 3/Child Task 3"
},
{
    "Name" : "Task 4",
    "ID" : 9,
    "StartTime" : "2012-02-02T00:00:00Z",
    "Effort" : "00:00:00",
    "ProgressPercent" : 60,
    "Description" : "Description of Task 4"
},
{
    "Name" : "Task 5",
    "ID" : 10,
    "StartTime" : "2012-02-02T00:00:00Z",
    "Effort" : "8:00:00",
    "PredecessorIndices" : "3+8",
    "Description" : "Description of Task 5"  
},
{
    "Name" : "Child Task 1",
    "ID" : 11,
    "IndentLevel" : 1,
    "StartTime" : "2012-02-02T00:00:00Z",
    "Effort" : "16:00:00",
    "Description" : "Description of Task 5/Child Task 1"
},
{
    "Name" : "Child Task 2",
    "ID" : 12,
    "PredecessorIndices" : "11SS",
    "IndentLevel" : 1,
    "StartTime" : "2012-02-02T00:00:00Z",
    "Effort" : "8:00:00",
    "Description" : "Description of Task 5/Child Task 2"
},
{
    "Name" : "Task 6",
    "ID" : 13,
    "StartTime" : "2012-02-02T00:00:00Z",
    "Effort" : "1.16:00:00",
    "Description" : "Description of Task 6" 
},
{
    "Name" : "Child Task 1",
    "ID" : 14,
    "IndentLevel" : 1,
    "StartTime" : "2012-02-02T00:00:00Z",
    "Effort" : "1.20:00:00",
    "Description" : "Description of Task 6/Child Task 1"  
},
{
    "Name" : "Grand Child Task 1",
    "ID" : 15,
    "StartTime" : "2012-02-04T00:00:00Z",
    "Effort" : "1.00:00:00",
    "IndentLevel" : 2,
    "Description" : "Description of Task 6/Child Task 2"
}]

4)包含甘特小部件的HTML檔案

在你的專案中建立一個新的HTML檔案,並引用以下原始檔。記得在下面最後一個引用中連結到正確版本的RadiantQ jQuery Gantt。

<head>
    <title></title>
    <link href="Src/Styles/jQuery-ui-themes/smoothness/jquery-ui.css" rel="stylesheet" />
    <link href="Src/Styles/radiantq.gantt.default.css" rel="stylesheet" />
    <link href="Src/Styles/VW.Grid.css" rel="stylesheet" />
    <script src="Src/Scripts/jquery-1.11.2.min.js" type="text/javascript"></script>
    <script src="Src/Scripts/jquery-ui-1.11.4/jquery-ui.min.js" type="text/javascript"></script>
    <script type="text/javascript" src="Src/Scripts/jquery.layout-latest.min.js"></script>
    <script src="Src/Scripts/Utils/date.js" type="text/javascript"></script>
    <script src="Src/ResourceStrings/en-US.js" type="text/javascript"></script>
    <script src='Src/Scripts/VW.Grid.1.min.js' type='text/javascript'></script>
    <script src='Src/Scripts/RadiantQ-jQuery.gantt.5.0.trial.min.js' type='text/javascript'></script>
</head>
<body>
    <div id="pagecontent" style="height: 600px;">
        <div id="gantt_container" style="height: 100%;">
        </div>
    </div>
</body>

5)TypeScript檔案

在你的專案中,在該HTML旁邊新增一個新的TypeScript檔案(myApp.ts),並引用html中的結果js。

<head>
    other script fils.
    <script src=myApp.js type='text/javascript'></script>
</head>

6)在TypeScript檔案裡面建立Ganttcontrol小部件。

$.ajax({
    type: "GET",
    dataType: 'json',
    url: 'GanttControlSkeleton.json',
    converters:
    {
        "text json": function (data) {
            //console.log(data);
            return $.parseJSON(data, true
            /*converts date strings to date objects*/
                , true
            /*converts ISO dates to local dates*/
                );
        }
    },
    success: function (data) {
        loadGantt(data);
    }
});
function loadGantt(datasourcejson) {
    var columns = [
            {
                field: "Activity_M().ID_M()",
                title: "ID",
                width: 20
            },
            {
                field: "Activity_M().ActivityName_M()",
                title: "Activity Name",
                width: 200,
                editor: RadiantQ.Default.Template.ProjectGanttExpandableTextboxEditor(),
                template: RadiantQ.Default.Template.ProjectGanttExpandableTextBlockTemplate()
            },
            {
                field: "Activity_M().StartTime_M()",
                title: "StartTime",
                width: 100,
                format: "MM/dd/yy",
                cellalign: "center",
                editor: "<input data-bind=' ValueBinder.ActivityTimeBinder:Activity_M().StartTime_M' />"
            },
            {
                field: "Activity_M().EndTime_M()",
                title: "EndTime",
                width: 100,
                format: "MM/dd/yy",
                cellalign: "center",
                editor: "<input data-bind='value:Activity_M().EndTime_M' data-getvalueName='getDate' data-setvaluename='setDate'                  data-valueUpdate='onBlur'  data-role=\"DateTimePicker\"  />"
            },
            {
                field: "Activity_M().Effort_M()",
                title: "Effort",
                format: "" /*to call the .toString()*/,
                width: 100,
                editor: "<input data-bind='value:Activity_M().Effort_M' style='height:18px'  data-role=\"DurationPicker\"  />"
            },
            {
                field: "Activity_M().ProgressPercent_M()",
                title: "ProgressPercent",
                width: 100,
                editor: "<input style='height:18px'  data-bind='value:Activity_M().ProgressPercent_M' data-role=\"spinner\"                       data-options='{\"min\":0, \"max\": 100}' />"
            },
            {
                field: "Activity_M().Assignments_M()",
                title: "Assignments",
                iseditable: false,
                template: '<div> ${                 RadiantQ.Gantt.ValueConverters.ConverterUtils.GetResourcesText(data.Activity_M().Assignments_M(), false) }                        </div>',              
                width: 200
            },
            {
                field: "Activity_M().PredecessorIndexString_M()",
                title: "PredecessorIndex",
                template: "<div>${data.PredecessorIndexString || '' }</div>",
                editor: "<input data-bind='value:PredecessorIndexString'/>",
                width: 150
            }
        ];
    var ganttControl: GanttControl;
    var anchorTime = datasourcejson[0].StartTime["clone"]();
    var $gantt_container = $('#gantt_container');
    $gantt_container.GanttControl({
        ProjectStartDate: anchorTime,
        DataSource: datasourcejson,
        GanttTableOptions: {
                columns: columns
        },
        IDBinding: new RadiantQ.BindingOptions("ID"),
        NameBinding: new RadiantQ.BindingOptions("Name"),
        IndentLevelBinding: new RadiantQ.BindingOptions("IndentLevel"),
        StartTimeBinding: new RadiantQ.BindingOptions("StartTime"),
        EffortBinding: new RadiantQ.BindingOptions("Effort"),
        PredecessorIndicesBinding: new RadiantQ.BindingOptions("PredecessorIndices"),
        ProgressPercentBinding: new RadiantQ.BindingOptions("ProgressPercent"),
        DescriptionBinding: new RadiantQ.BindingOptions("Description"),
        TimeRangeHighlightBehavior: RadiantQ.Gantt.TimeRangeHighlightBehavior.HighlightInChartOnHeaderMouseHover,
        GanttChartTemplateApplied: function (sender , args) {
            ganttControl = <GanttControl>$gantt_container.data("GanttControl");
            var $ganttChart = args.element;
            $ganttChart.GanttChart({ AnchorTime: anchorTime });
        }
    });
};

最後,看看這個主題,告訴你如何清理專案中的Src資料夾,刪除不必要的檔案。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69995027/viewspace-2758749/,如需轉載,請註明出處,否則將追究法律責任。

相關文章