用javascript代码向listbox中增加项以后,在后台的.aspx.cs代码中listbox的items.count值始终为0,请哪位大侠帮忙看看,问题出在哪里?javascript代码在页面执行时是可以往listbox中增加项的,代码如下: if (e.checked == true) { opt = document.createElement("OPTION"); opt.innerText = aa.cells[3].innerText; opt.value = aa.cells[3].innerText//不用值的话这行可以不要 c.appendChild(opt); c.childElementCount++; } else {
for (i = c.length - 1; i >= 0; i--) { if (c.options[i].innerText == aa.cells[3].innerText) { c.remove(i); c.childElementCount--; } } } 但是页面上listbox项增加了以后,后台代码执行时lstSlabList.Items.Count 的值始终为0,后台代码如下: for (int i = 0; i < lstSlabList.Items.Count ; i++) { strUpdate = strsub + lstSlabList.Items[i].ToString () + "'"; UpdateComm.CommandText = strUpdate; UpdateComm.Transaction = mytrans; UpdateComm.ExecuteNonQuery(); }
js操作的是html,而后台认的是ViewState里的东西,所以对于DropDownList和ListBox之类的,是不能直接修改相应值的
纯粹的html控件来做UI,数据库访问还是需要页面提交后,在服务端处理 用服务端控件,一般是在某个控件(比如控件)点击后,页面会提交(PostBack),在button_Click事件处理中,你可以 listBox.Items.Add...添加,但是这么做用户体验很不好(代码比较好写,你可以自己先试试)
一般推荐的做法是用JS+html控件就好了,因为增加子项时完全不用与服务端进行交互 如果这些子项是从数据库中查询出来的,一般也是用ajax添加 不过这两种方式需要你熟悉基本的js以及ajax
|