Skip to content

Commit 08d9d89

Browse files
Change connection using PartialView
1 parent db9c594 commit 08d9d89

File tree

5 files changed

+121
-4
lines changed

5 files changed

+121
-4
lines changed

MVC/Controllers/ChangeConnectionController.cs

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,23 @@ namespace MVC_Samples.Controllers
99
{
1010
public class ChangeConnectionController : Controller
1111
{
12+
private string _instanceId = "ChangeConnection";
13+
1214
public ActionResult Index()
1315
{
1416
// Get an instance of the QueryBuilder object
15-
var qb = QueryBuilderStore.Get("ChangeConnection");
17+
var qb = QueryBuilderStore.Get(_instanceId);
18+
19+
if (qb == null)
20+
qb = CreateQueryBuilder();
21+
22+
return View(qb);
23+
}
24+
25+
public ActionResult WithPartiaView()
26+
{
27+
// Get an instance of the QueryBuilder object
28+
var qb = QueryBuilderStore.Get(_instanceId);
1629

1730
if (qb == null)
1831
qb = CreateQueryBuilder();
@@ -23,7 +36,7 @@ public ActionResult Index()
2336
private QueryBuilder CreateQueryBuilder()
2437
{
2538
// Create an instance of the QueryBuilder object
26-
var qb = QueryBuilderStore.Create("ChangeConnection");
39+
var qb = QueryBuilderStore.Create(_instanceId);
2740

2841
SetNorthwindXml(qb);
2942

@@ -33,7 +46,20 @@ private QueryBuilder CreateQueryBuilder()
3346
[HttpPost]
3447
public ActionResult Change(string name)
3548
{
36-
var queryBuilder = QueryBuilderStore.Get("ChangeConnection");
49+
ChangeConnection(name);
50+
return new EmptyResult();
51+
}
52+
53+
[HttpPost]
54+
public PartialViewResult ChangePartial(string name)
55+
{
56+
var qb = ChangeConnection(name);
57+
return PartialView("_queryBuilder", qb);
58+
}
59+
60+
public QueryBuilder ChangeConnection(string name)
61+
{
62+
var queryBuilder = QueryBuilderStore.Get(_instanceId);
3763

3864
queryBuilder.MetadataContainer.Clear();
3965

@@ -44,7 +70,7 @@ public ActionResult Change(string name)
4470
else
4571
SetDb2Xml(queryBuilder);
4672

47-
return new EmptyResult();
73+
return queryBuilder;
4874
}
4975

5076
private void SetNorthwindXml(QueryBuilder qb)

MVC/MVC.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,8 @@
238238
<Content Include="Views\SubQueryResultsPreviewDemo\Index.cshtml" />
239239
<Content Include="Views\MobileDemo\Index.cshtml" />
240240
<Content Include="Views\BootstrapTheming\Index.cshtml" />
241+
<Content Include="Views\ChangeConnection\WithPartiaView.cshtml" />
242+
<Content Include="Views\ChangeConnection\_queryBuilder.cshtml" />
241243
</ItemGroup>
242244
<ItemGroup>
243245
<Folder Include="App_Data\" />
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
@{
2+
ViewBag.Title = "Switch Database Connections Demo";
3+
}
4+
5+
<div class="row">
6+
<div class="col-md-12">
7+
<h1>Switch Database Connections Demo</h1>
8+
<p>Switching between different database connections at run time.</p>
9+
<div>
10+
<h3 style="display: inline">Connect to:</h3>
11+
<button class="change">NorthwindXmlMetaData</button>
12+
<button class="change">Db2XmlMetaData</button>
13+
<button class="change">SQLite</button>
14+
</div>
15+
</div>
16+
<div class="col-md-12 query-builder-container"></div>
17+
</div>
18+
19+
@section scripts
20+
{
21+
<script>
22+
$('.change').click(function() {
23+
$.ajax({
24+
type: 'POST',
25+
url: '/ChangeConnection/ChangePartial',
26+
data: {
27+
name: this.innerText
28+
},
29+
success: function (data) {
30+
if (window.AQB != null)
31+
AQB.Web.dispose();
32+
33+
$('.query-builder-container').html(data);
34+
35+
AQB.Web.onQueryBuilderReady(function (qb) {
36+
qb.on(qb.Events.SqlChanged, function () {
37+
isQueryChanged = true;
38+
});
39+
qb.on(qb.Events.SQLTextChanged, function () {
40+
isQueryChanged = true;
41+
});
42+
});
43+
44+
AQB.startApplication();
45+
}
46+
});
47+
});
48+
</script>
49+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
@using ActiveQueryBuilder.Web.MVC
2+
@model ActiveQueryBuilder.Web.Server.QueryBuilder
3+
4+
@{
5+
ViewBag.Title = "Switch Database Connections Demo";
6+
var controls = Html.QueryBuilder(Model);
7+
}
8+
9+
@controls.GetHtml()
10+
<div class="qb-ui-layout">
11+
<div class="qb-ui-layout__top">
12+
<div class="qb-ui-layout__left">
13+
<div class="qb-ui-structure-tabs">
14+
<div class="qb-ui-structure-tabs__tab">
15+
<input type="radio" id="tree-tab" name="qb-tabs" checked />
16+
<label for="tree-tab">Database</label>
17+
<div class="qb-ui-structure-tabs__content">
18+
@controls.ObjectTreeView().GetHtml()
19+
</div>
20+
</div>
21+
</div>
22+
</div>
23+
<div class="qb-ui-layout__right">
24+
@controls.SubQueryNavigationBar().GetHtml()
25+
@controls.Canvas().GetHtml()
26+
@controls.StatusBar().GetHtml()
27+
@controls.Grid().GetHtml()
28+
</div>
29+
</div>
30+
<div class="qb-ui-layout__bottom">
31+
@controls.SqlEditor().GetHtml()
32+
</div>
33+
</div>

MVC/Views/Home/Index.cshtml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,13 @@
176176
<a class="btn btn-default" href="@Url.Action("Index", "ChangeConnection")">Run &raquo;</a>
177177
</p>
178178
</div>
179+
<div class="col-md-4">
180+
<h3>Switch Database Connections. Partial view</h3>
181+
<p>Switching between different database connections at run time using PartialView</p>
182+
<p>
183+
<a class="btn btn-default" href="@Url.Action("WithPartiaView", "ChangeConnection")">Run &raquo;</a>
184+
</p>
185+
</div>
179186
</div>
180187

181188
<div class="row">

0 commit comments

Comments
 (0)