简体   繁体   中英

Access list box items added on client side

  1. I have a listbox with runat=server
    1. Items are added to this listbox on the client side, using javascript
    2. I would want to retrieve the items on the server side on the click of a button

The problem is in the Buttons's server side click handler, I cannot see the new items added to the listbox. Only the items that were there on page_load are displayed. How do i accomplish what i want to do

Edit 1

My Code Is like this

 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

    }

Ah when abstractions leek :)

Web server controls are serialised to view state before the response is sent, the control is recreated on postback and the options all put back from view state.

When you add option items client side they are not added to viewstate. The only way is to use your own hidden field to serialise client side additions and read them on postback or ajax the additions serverside.

Only bind to the ListBox if Page.IsPostBack is false . This will allow you to see any items added on the client side.

If you are binding to the control on each load you are wiping out any existing items that were loaded by ASP.NET from the request. By only binding if the current page load was not triggered by a postback you are allowing all the items from the request to load, including any items added client-side.

You should use ajax to add items to the dropdown list. It will ensure your viewstate is in sync with the serverside dropdown control.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM