Пришлось немного подправить код, похоже, что эта функция не была полностью протестирована в исходном коде. Я пытался просто добавить элементы в «Элементы», и они появлялись при загрузке страницы, но сразу исчезли, если бы я добавил новый элемент, поскольку они не сохранялись в скрытом поле.
После модификации кода вы можете сделать следующее, где tiTest2 является элементом управления ASPTokenInput (извините, нет поддержки tiTest2.Items.Add):
List<ASPTokenInput.Item> items = new List<ASPTokenInput.Item>();
items.Add(new ASPTokenInputLib.ASPTokenInput.Item() { id = "United States", name = "United States" });
items.Add(new ASPTokenInputLib.ASPTokenInput.Item() { id = "Brazil", name = "Brazil" });
tiTest2.Items = items;
Вам необходимо изменить код следующим образом:
//Change the Items property to the following
public List<Item> Items
{
get
{
this.EnsureChildControls();
if (String.IsNullOrEmpty(_hfPersist.Value)) return new List<Item>();
else return (List<Item>)new JavaScriptSerializer().Deserialize<IList<Item>>(_hfPersist.Value);
}
set
{
this.EnsureChildControls();
_hfPersist.Value = new JavaScriptSerializer().Serialize(value);
}
}
//Empty out "OnLoad", so it looks like this. The functionality it was providing we don't need anymore
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
}