您好我正在使用ASPTokenInput库从下面的url中查找 https://github.com/harindaka/ASPTokenInput/wiki 任何人都可以帮助我如何在页面加载和部分回发上预先填充一些令牌控件
答案 0 :(得分:1)
不得不稍微调整一下代码,看起来这个功能在原始代码中没有经过全面测试。我尝试将项目添加到“项目”并且它们显示在页面加载上,但如果我添加了一个新项目,它会立即消失,因为它们没有存储在隐藏字段中。
修改代码后,您可以执行以下操作,其中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);
}