【发布时间】:2011-11-01 03:11:11
【问题描述】:
我想显示特定投票问题的投票结果。 当点击问题列表时,我想根据选定的 questionId 将我的图表与查询绑定。
所以我的计划是; 1. 从选定的问题行中获取 questionId。没关系。
-
在我的图表上定义 ClientEvents.OndataBinding 事件。所以我可以 通过 questionId ;
函数 onChartDataBinding(e) { e.data = $.extend(e.data, { questionId: questionId }); }
在问题列表网格行选择事件上使用
$('#ChartPollResults').data('tChart').rebind();。
当我根据选定的第一个网格行进行第二个网格绑定时,此方案有效。
但似乎图表控件上没有 ClientEvents.OnDataBinding 事件。
而且 Chart 控件不支持“rebind()”方法。
我使用的图表控制如下。
@(Html.Telerik().Chart<QuestionResult>()
.Theme("WebBlue")
.Name("ChartPollResults")
.Title("Poll Question Choice Number vs. Choice Count")
.Legend(legend => legend.Position(ChartLegendPosition.Bottom))
.Series(series =>
{
series.Bar("ChoseCount").Name("Choice Count").Gap(5);
})
.CategoryAxis(axis => axis.Categories(o => o.ChoiceNumber))
.DataBinding(dataBinding => dataBinding.Ajax().Select("_PollResultChartBinding", "Poll", new { questionId = 0 }))
.HtmlAttributes(new { style = "width: %100px; height: 270px" })
)
我的Controller绑定方法;
public ActionResult _PollResultChartBinding(int questionId = 0)
{
//questionId = 3;
if (!ModelState.IsValid || questionId == 0)
return Json(new List<QuestionResult>());
PollQuestionDefinition pollQuestion = service.Get(questionId);
List<PollAnswer> pollAnswers = service.GetPollAnswersByQuestion(questionId);
PollQuestionResultUI result = new PollQuestionResultUI(pollQuestion, pollAnswers);
return Json(result.Results);
}
当我注释掉 //questionId = 3; 行时,我可以在图表中看到 Id= 3 的问题的结果,没有问题。
但我无法将 questionId 传递给图表。
提前致谢。
【问题讨论】:
标签: asp.net-mvc charts telerik