ber*_*dem 5 asp.net-mvc charts telerik
我想显示特定民意调查问题的民意调查结果.单击问题列表时,我想根据所选的questionId将我的图表与查询绑定.
所以我的计划是; 1.从选定的问题行中获取问题.没关系.
在我的图表上定义ClientEvents.OndataBinding事件.所以我可以通过questionId;
function onChartDataBinding(e){e.data = $ .extend(e.data,{questionId:questionId}); }
使用$('#ChartPollResults').data('tChart').rebind();问题列表网格行选择事件.
当我根据第一个网格选定行进行第二次网格绑定时,此方案有效.但似乎图表控件上没有ClientEvents.OnDataBinding事件.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" })
)
Run Code Online (Sandbox Code Playgroud)
我的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);
}
Run Code Online (Sandbox Code Playgroud)
当我注释掉//questionId = 3;行时,我可以在图表中看到问题的结果,并且没有问题.
但是我无法将问题传递给图表.
提前致谢.
小智 1
首先,我立即注意到的一件事是您在 ActionResult 参数中将 QuestionId 设置为 0。我实际上只是修改了我已经启动并运行的图表以传递
new { questionID = 0}
Run Code Online (Sandbox Code Playgroud)
作为我的 Ajax select 语句的附加参数,它顺利通过。
至于传递参数,您可以考虑在网格选择上使用 POST 到服务器并以这种方式传递参数。我知道这可能并不理想,但理论上您可以填充该帖子中的图表,或者只是设置一个 ViewData 条目来包含您正在寻找的特定 QuestionID。
我还注意到您将其提交到Telerik 论坛,从那里的回复来看,上述方法实际上可能效果很好,或者您可以使用那里提到的方法(使用 ajax 调用的部分视图)。
| 归档时间: |
|
| 查看次数: |
1749 次 |
| 最近记录: |