关于asp.net中的listbox有关问题
关于asp.net中的listbox问题
vs2010开始,我重新看到了MS代码封装的诚意,一切以易用为主。开始使用.net写点工具和管理程序。
但是由于从vb6,asp到现在 的vb.net,asp.net中缺失了不少知识,总有点力不从心,特发帖求教。
关于listbox,listbox的操作有2种方式,前台,后台。
我这里有个实际的应用:
打开日历,遍历当前月,并在某些特殊日期上做好标记
在日历遍历中,根据特殊规则获取特殊日期,加入listbox_auto
选择listbox_auto的内容,显示当前选择项的内容
按按钮button_add,将listbox_auto加入listbox_edit中。
在这个过程中,为了简化不重要的部分,全部采取单选方式.
标准的listbox应用,在page_load中写入
if not(ispostback) then
dim _ls as new listitem
_ls.text="XXX"
_ls.value="ooo"
listbox_auto.items.add _ls
end if
这种方式,添加初始数据后,点button_add 页面自动postback,并且postback后,page_load中添加的数据仍然存在。
显示当前listbox_auto,使用jquery,很容易实现
button_add的click事件中将 listbox_auto的selectdata加入listbox_edit很容易实现。
问题来了:
以上是标准写法。问题是,我是使用calendar控件的的DayRender事件遍历日期,并且添加listbox项目。
当calendar控件在listbox_auto之前,则,listbox中正常出现内容,如果在listbox_auto之后,listbox_auto不出现内容。
更可怕的是,即使出现内容,button_add事件后,listbox_auto内容并未被postback到后一个页面。
分析:
猜测,dayRender事件虽然能把内容添加到listbox_auto中,但是,未能加入隐藏数据中。
问题:
有什么方法能让dayRender事件中添加到Listbox_auto中的数据能自动postback到下个页面去不!!!!
要求:
第一,不是使用数据绑定
第二,尽量使用系统自带功能,非手动扩展类等手段
第三,不考虑前台控制,因为后期我要将list_edit的内容更新入数据库。
------解决方案--------------------
一般用js改变的项,要想获得listbox的值,就要在提交前选将listbox_auto全选(必须设置选中状态),然后再执行提交
后台程序通过用Request["listbox_auto的name"]来获得数据
------解决方案--------------------
如果你习惯VB6的开发方式,你可以使用Extjs。
------解决方案--------------------
猜测,dayRender事件虽然能把内容添加到listbox_auto中,但是,未能加入隐藏数据中。
隐藏数据是什么?
------解决方案--------------------
算了,首先告诉你一个不幸的消息,asp.net自带的Calendar是个垃圾控件,有很多BUG存在,比如不支持ISPOSTBACK,想通过dayRender修改别的控件必须得放之前等,我就是在学的时候点了几下,然后就彻底抛弃它了,可能在VS2008或是1213里没有存在这种BUG了
------解决方案--------------------
极大可能我所说的BUG对它来说是故意的,因为我相信MS的开发能力,但绝对不是你说的重绘事件可以跳过ISPOSTBACK,但我就是用不习惯它,好吧,说说你的问题。
你要的功能可能我的理解还是错误,但我理解为:首先listbox有数据,其次用viewstate保存。
listbox你可以在if(!ispostback)里绑定数据源或添加,因为dayrendar事件还有顺序之分,所以我们就认为它只能改自己不能改别的控件,所以别把listbox的绑定和它扯上关系。
其次,viewstate你可以理解为永久存在于客户端的session,你只需要在button事件里viewstate["xxxx"] = b;再取出来时用:
a b = (a)b;
这样就可以了。
vs2010开始,我重新看到了MS代码封装的诚意,一切以易用为主。开始使用.net写点工具和管理程序。
但是由于从vb6,asp到现在 的vb.net,asp.net中缺失了不少知识,总有点力不从心,特发帖求教。
关于listbox,listbox的操作有2种方式,前台,后台。
我这里有个实际的应用:
打开日历,遍历当前月,并在某些特殊日期上做好标记
在日历遍历中,根据特殊规则获取特殊日期,加入listbox_auto
选择listbox_auto的内容,显示当前选择项的内容
按按钮button_add,将listbox_auto加入listbox_edit中。
在这个过程中,为了简化不重要的部分,全部采取单选方式.
标准的listbox应用,在page_load中写入
if not(ispostback) then
dim _ls as new listitem
_ls.text="XXX"
_ls.value="ooo"
listbox_auto.items.add _ls
end if
这种方式,添加初始数据后,点button_add 页面自动postback,并且postback后,page_load中添加的数据仍然存在。
显示当前listbox_auto,使用jquery,很容易实现
button_add的click事件中将 listbox_auto的selectdata加入listbox_edit很容易实现。
问题来了:
以上是标准写法。问题是,我是使用calendar控件的的DayRender事件遍历日期,并且添加listbox项目。
当calendar控件在listbox_auto之前,则,listbox中正常出现内容,如果在listbox_auto之后,listbox_auto不出现内容。
更可怕的是,即使出现内容,button_add事件后,listbox_auto内容并未被postback到后一个页面。
分析:
猜测,dayRender事件虽然能把内容添加到listbox_auto中,但是,未能加入隐藏数据中。
问题:
有什么方法能让dayRender事件中添加到Listbox_auto中的数据能自动postback到下个页面去不!!!!
要求:
第一,不是使用数据绑定
第二,尽量使用系统自带功能,非手动扩展类等手段
第三,不考虑前台控制,因为后期我要将list_edit的内容更新入数据库。
------解决方案--------------------
一般用js改变的项,要想获得listbox的值,就要在提交前选将listbox_auto全选(必须设置选中状态),然后再执行提交
后台程序通过用Request["listbox_auto的name"]来获得数据
------解决方案--------------------
如果你习惯VB6的开发方式,你可以使用Extjs。
------解决方案--------------------
猜测,dayRender事件虽然能把内容添加到listbox_auto中,但是,未能加入隐藏数据中。
隐藏数据是什么?
------解决方案--------------------
算了,首先告诉你一个不幸的消息,asp.net自带的Calendar是个垃圾控件,有很多BUG存在,比如不支持ISPOSTBACK,想通过dayRender修改别的控件必须得放之前等,我就是在学的时候点了几下,然后就彻底抛弃它了,可能在VS2008或是1213里没有存在这种BUG了
------解决方案--------------------
极大可能我所说的BUG对它来说是故意的,因为我相信MS的开发能力,但绝对不是你说的重绘事件可以跳过ISPOSTBACK,但我就是用不习惯它,好吧,说说你的问题。
你要的功能可能我的理解还是错误,但我理解为:首先listbox有数据,其次用viewstate保存。
listbox你可以在if(!ispostback)里绑定数据源或添加,因为dayrendar事件还有顺序之分,所以我们就认为它只能改自己不能改别的控件,所以别把listbox的绑定和它扯上关系。
其次,viewstate你可以理解为永久存在于客户端的session,你只需要在button事件里viewstate["xxxx"] = b;再取出来时用:
a b = (a)b;
这样就可以了。