问题出在Buttons的服务器端点击处理程序中,我看不到添加到列表框中的新项目。仅显示page_load上的项目。我如何完成我想做的事
我的代码是这样的
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (ViewState["gameID"] == null)
{
//Populate Listbox
//Set gameid in viewstate
}
//Add javascript handlers to buttons
btnSomeButton.Attributes.Add("onclick", "aJavaScriptFunction");
}
}
protected void btnSave_Click(object sender, EventArgs e)
{
ListItemCollection x = ListBoxRanks.Items;
//Here items is has just those items that are added to the listbox on page load
}
答案 0 :(得分:4)
啊,当抽象韭菜:)
Web服务器控件被序列化以在发送响应之前查看状态,在回发时重新创建控件,并且所有选项都从视图状态返回。
当您添加选项项客户端时,它们不会添加到viewstate。唯一的方法是使用您自己的隐藏字段来序列化客户端添加并在回发时读取它们或者在服务器端添加ajax。
答案 1 :(得分:0)
如果Page.IsPostBack
为false
,则仅绑定到ListBox。这将允许您查看客户端添加的任何项目。
如果绑定到每个加载的控件,则会清除ASP.NET从请求中加载的所有现有项。通过仅绑定如果当前页面加载没有被回发触发,您允许加载请求中的所有项目,包括客户端添加的任何项目。
答案 2 :(得分:0)
您应该使用ajax将项目添加到下拉列表中。它将确保您的viewstate与服务器端下拉控件同步。