我有一个应用程序,我需要将多个(和嵌套的)控件添加到 PlaceHolder。用户输入“周数”,我的应用程序添加了一个 RadSplitter(使用 Telerik 控件集),以及相关的窗格/网格。我使用后面的代码添加这些控件。
这在第一次绑定时工作正常(输入周数并单击提交时)。但我还需要在控件之间启用拖放功能,这会导致回发。
我的占位符中的控件数量似乎在回发时始终为“0”,所以我猜测它们没有存储在 ViewState 中。我如何确保我的控件存储在 ViewState 中,而不必在每次回发时都阅读这些内容?
这是一些示例代码:
protected void btnSubmit_Click(object sender, EventArgs e)
{
if (plcSplitter.Controls.Count > 0)
plcSplitter.Controls.Remove(plcSplitter.Controls[0]);
var splitter = new Telerik.Web.UI.RadSplitter();
splitter.Width = Unit.Percentage(100);
int noOfWeeks = int.Parse(txtNoOfWeeks.Text);
DateTime dt = new DateTime(2012, 05, 13);
for (int i = 0; i < noOfWeeks; i++)
{
var range = new Common.DateRange(dt.AddDays(-6),dt);
var pane = new Telerik.Web.UI.RadPane();
Label lbl = new Label();
lbl.ID = "lblText";
lbl.Text = range.To.ToShortDateString();
pane.Controls.Add(lbl);
var gv = AddGrid(i);
pane.Controls.Add(gv);
splitter.Items.Add(pane);
var splitLine = new Telerik.Web.UI.RadSplitBar();
splitter.Items.Add(splitLine);
dt = dt.AddDays(-7);
}
plcSplitter.Controls.Add(splitter);
splitter.DataBind();
}