Skip to content

Commit b6052cc

Browse files
committed
hierarchy repeater: fix client-side command in markup control
problem was that that BindingHelper.FindDataContextTarget assumed there was one more data context layer since we used set data context type and DataContext on different controls. Because of that command client-side and server-side data context paths didn't match. Technically, this is a glitch of BindingHelper, not HierarchyRepeater, but "fixing" BindingHelper will break many things and it's hopefully going to be done in #1392
1 parent f7ed8f7 commit b6052cc

File tree

2 files changed

+6
-5
lines changed

2 files changed

+6
-5
lines changed

src/Framework/Framework/Controls/HierarchyRepeater.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,7 @@ private DotvvmControl CreateServerItem(
258258
Internal.PathFragmentProperty,
259259
$"{GetPathFragmentExpression()}{parentSegment}/[{index}]");
260260
placeholder.SetValue(Internal.UniqueIDProperty, "item");
261+
placeholder.SetDataContextTypeFromDataSource(GetDataSourceBinding()); // DataContext type has to be duplicated on the placeholder, because BindingHelper.FindDataContextTarget (in v4.1)
261262
dataItem.Children.Add(placeholder);
262263
ItemTemplate.BuildContent(context, placeholder);
263264

src/Tests/ControlTests/testoutputs/HierarchyRepeaterTests.CommandInMarkupControl-server.html

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,19 @@
44

55
<div><!-- ko dotvvm-SSR-foreach: { data: HItems } --><!-- ko dotvvm-SSR-item: 0 -->
66
<!-- ko with: $rawData --><div>
7-
<input type=button value=A onclick='dotvvm.postBack(this,["HItems/[0]","$parents[1]"],"RR93KduwUKJIXxFp","c7_0L_c9",null,[],[],undefined).catch(dotvvm.log.logPostBackScriptError);event.stopPropagation();return false;' /></div><!-- /ko -->
7+
<input type=button value=A onclick='dotvvm.postBack(this,["HItems/[0]","$parent"],"RR93KduwUKJIXxFp","c7_0L_c9",null,[],[],undefined).catch(dotvvm.log.logPostBackScriptError);event.stopPropagation();return false;' /></div><!-- /ko -->
88
<!-- /ko --><!-- ko dotvvm-SSR-foreach: { data: ko.unwrap($foreachCollectionSymbol)[0]().Children } --><!-- ko dotvvm-SSR-item: 0 -->
99
<!-- ko with: $rawData --><div>
10-
<input type=button value=A_1 onclick='dotvvm.postBack(this,["HItems/[0]/[0]","$parents[1]"],"RR93KduwUKJIXxFp","c7_0_0L_c9",null,[],[],undefined).catch(dotvvm.log.logPostBackScriptError);event.stopPropagation();return false;' /></div><!-- /ko -->
10+
<input type=button value=A_1 onclick='dotvvm.postBack(this,["HItems/[0]/[0]","$parent"],"RR93KduwUKJIXxFp","c7_0_0L_c9",null,[],[],undefined).catch(dotvvm.log.logPostBackScriptError);event.stopPropagation();return false;' /></div><!-- /ko -->
1111
<!-- /ko --><!-- ko dotvvm-SSR-foreach: { data: ko.unwrap($foreachCollectionSymbol)[0]().Children } --><!-- ko dotvvm-SSR-item: 0 -->
1212
<!-- ko with: $rawData --><div>
13-
<input type=button value=A_1_1 onclick='dotvvm.postBack(this,["HItems/[0]/[0]/[0]","$parents[1]"],"RR93KduwUKJIXxFp","c7_0_0_0L_c9",null,[],[],undefined).catch(dotvvm.log.logPostBackScriptError);event.stopPropagation();return false;' /></div><!-- /ko -->
13+
<input type=button value=A_1_1 onclick='dotvvm.postBack(this,["HItems/[0]/[0]/[0]","$parent"],"RR93KduwUKJIXxFp","c7_0_0_0L_c9",null,[],[],undefined).catch(dotvvm.log.logPostBackScriptError);event.stopPropagation();return false;' /></div><!-- /ko -->
1414
<!-- /ko --><!-- ko dotvvm-SSR-item: 1 -->
1515
<!-- ko with: $rawData --><div>
16-
<input type=button value=A_1_2 onclick='dotvvm.postBack(this,["HItems/[0]/[0]/[1]","$parents[1]"],"RR93KduwUKJIXxFp","c7_0_0_1L_c9",null,[],[],undefined).catch(dotvvm.log.logPostBackScriptError);event.stopPropagation();return false;' /></div><!-- /ko -->
16+
<input type=button value=A_1_2 onclick='dotvvm.postBack(this,["HItems/[0]/[0]/[1]","$parent"],"RR93KduwUKJIXxFp","c7_0_0_1L_c9",null,[],[],undefined).catch(dotvvm.log.logPostBackScriptError);event.stopPropagation();return false;' /></div><!-- /ko -->
1717
<!-- /ko --><!-- /ko --><!-- /ko --><!-- ko dotvvm-SSR-item: 1 -->
1818
<!-- ko with: $rawData --><div>
19-
<input type=button value=B onclick='dotvvm.postBack(this,["HItems/[1]","$parents[1]"],"RR93KduwUKJIXxFp","c7_1L_c9",null,[],[],undefined).catch(dotvvm.log.logPostBackScriptError);event.stopPropagation();return false;' /></div><!-- /ko -->
19+
<input type=button value=B onclick='dotvvm.postBack(this,["HItems/[1]","$parent"],"RR93KduwUKJIXxFp","c7_1L_c9",null,[],[],undefined).catch(dotvvm.log.logPostBackScriptError);event.stopPropagation();return false;' /></div><!-- /ko -->
2020
<!-- /ko --><!-- /ko --></div>
2121

2222

0 commit comments

Comments
 (0)