【发布时间】:2012-03-16 03:38:28
【问题描述】:
我正在使用 ASP.NET (Visual C#) 在 SharePoint 可视化 Web 部件中创建自定义视图,并且有一个 CheckBoxList 和一个按钮。
列表和按钮的标记:
<td>
<asp:checkboxlist ID="cblYearLst" runat="server" EnableViewState="true" />
</td>
<td>
<asp:Button ID="btnRefineSearch" Text="Refine Search" runat="server" />
</td>
我在 PreRender 上将项目添加到 CheckBoxList:
if (!IsPostBack)
{
if (LstYears != null)
{
for (int i = 0; i < LstYears.Count(); i++)
{
cblYearLst.Items.Add(new ListItem(LstYears[i], LstYears[i]));
}
}
}
然后我为 Page_Load 上的按钮调用事件处理程序:
btnRefineSearch.Click += new EventHandler(this.btnRefineSearch_Click);
单击按钮后,所有 CheckBox 列表项都不会保持选中状态。我可以检索选定的值,但它们不会显示为选定的。当我在预渲染事件中为按钮添加 Click 事件处理程序时,数据会正确显示,但我的 Click 事件无法再检索所选值。
关于可能导致这种行为的任何想法?
【问题讨论】:
-
我认为您在周期中添加项目为时已晚。将它们添加到 PreInit on Init:stackoverflow.com/questions/2724771/…
-
@jfmags 我已经尝试了您的建议,但列表不再显示。
-
@jfmags 我在 Page_Load 中设置了 LstYears,我也应该这样做 OnInIt 吗?
-
是的 - 你必须在循环之前设置它 - 否则它不会有任何项目。
-
@jfmags 我将设置 LstYears 移动到 OnInIt 并且最初的问题仍然存在
标签: c# asp.net visual-studio-2010 sharepoint-2010 checkboxlist