关于asp.net中的listbox问题

notback 2014-05-27 11:39:31
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的内容更新入数据库。

...全文
188 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
notback 2014-05-28
  • 打赏
  • 举报
回复
.net区...有没有nb点的人啊
devmiao 2014-05-27
  • 打赏
  • 举报
回复
如果你习惯VB6的开发方式,你可以使用Extjs。
md5e 2014-05-27
  • 打赏
  • 举报
回复
一般用js改变的项,要想获得listbox的值,就要在提交前选将listbox_auto全选(必须设置选中状态),然后再执行提交 后台程序通过用Request["listbox_auto的name"]来获得数据
notback 2014-05-27
  • 打赏
  • 举报
回复
我就不引用了。太长。 trace了一下 页面周期执行顺序如下: PreInit Init InitComplete LoadState ProcessPostData PreLoad Begin Load PageLoad End Load ProcessPostData Second Try Reise ChangeEvents Raise PostBackEvent LoadComplete PreRender PreRenderComplete SaveState SaveStateComplete Begin Render Day_Rendar End Render 可以看出Day_Rendar执行在SaveState之后, 所以Day_Rendar内做的select 修改,虽然能看见,但是没有保存入viewstate 而如果在Page_Load事件中加入Select 内容修改,其事件发生在 LoadState 与 SaveState之间 系统自动进行了 Load Save操作,所以可以把内容传送到postback页面。 现在问题: 如何手动引发SaveState,将改动后的数据存入ViewState 如何手动引发PostBack ,将Day_Rendar内添加的数据彻底固化!!!
jimil 2014-05-27
  • 打赏
  • 举报
回复
引用 7 楼 NotBack 的回复:
[quote=引用 6 楼 jimil 的回复:] 算了,首先告诉你一个不幸的消息,asp.net自带的Calendar是个垃圾控件,有很多BUG存在,比如不支持ISPOSTBACK,想通过dayRender修改别的控件必须得放之前等,我就是在学的时候点了几下,然后就彻底抛弃它了,可能在VS2008或是1213里没有存在这种BUG了
挺好用呵,仍然不支持ispostback , 每次必须重绘,毕竟dayrendar是重绘事件吧。 我用Trace跟踪了一下,dayrendar是在pageload之后触发的,所以一定是additem后,listbox_auto数据未能自动保存以及自动postback,求方法。 vb的精华不在于扩展性多强,而是其自动化过程容易搭车,不在于控件多简陋,而是如何把自己的思路附属到自动化过程中搭车实现。[/quote] 极大可能我所说的BUG对它来说是故意的,因为我相信MS的开发能力,但绝对不是你说的重绘事件可以跳过ISPOSTBACK,但我就是用不习惯它,好吧,说说你的问题。 你要的功能可能我的理解还是错误,但我理解为:首先listbox有数据,其次用viewstate保存。 listbox你可以在if(!ispostback)里绑定数据源或添加,因为dayrendar事件还有顺序之分,所以我们就认为它只能改自己不能改别的控件,所以别把listbox的绑定和它扯上关系。 其次,viewstate你可以理解为永久存在于客户端的session,你只需要在button事件里viewstate["xxxx"] = b;再取出来时用: a b = (a)b; 这样就可以了。
notback 2014-05-27
  • 打赏
  • 举报
回复
trace了,dayrender发生在page的所有事件之后 pageload则发生在loadstate与savestate之间。 求listbox默认自动化 loadstate 与 savestate代码
notback 2014-05-27
  • 打赏
  • 举报
回复
引用 6 楼 jimil 的回复:
算了,首先告诉你一个不幸的消息,asp.net自带的Calendar是个垃圾控件,有很多BUG存在,比如不支持ISPOSTBACK,想通过dayRender修改别的控件必须得放之前等,我就是在学的时候点了几下,然后就彻底抛弃它了,可能在VS2008或是1213里没有存在这种BUG了
挺好用呵,仍然不支持ispostback , 每次必须重绘,毕竟dayrendar是重绘事件吧。 我用Trace跟踪了一下,dayrendar是在pageload之后触发的,所以一定是additem后,listbox_auto数据未能自动保存以及自动postback,求方法。 vb的精华不在于扩展性多强,而是其自动化过程容易搭车,不在于控件多简陋,而是如何把自己的思路附属到自动化过程中搭车实现。
jimil 2014-05-27
  • 打赏
  • 举报
回复
算了,首先告诉你一个不幸的消息,asp.net自带的Calendar是个垃圾控件,有很多BUG存在,比如不支持ISPOSTBACK,想通过dayRender修改别的控件必须得放之前等,我就是在学的时候点了几下,然后就彻底抛弃它了,可能在VS2008或是1213里没有存在这种BUG了
notback 2014-05-27
  • 打赏
  • 举报
回复
引用 4 楼 jimil 的回复:
猜测,dayRender事件虽然能把内容添加到listbox_auto中,但是,未能加入隐藏数据中。 隐藏数据是什么?
我以为Listbox在postback时候,将当前数据放入隐藏域,传输到下一个页面来,比如一开始的标准写法,点击button_add后 新的页面保存了原始添加的数据。 但是我使用 Response.Write("vs count:" & ViewState.Count.ToString) 却始终显示为0 viewstate.keys.count.tostring 也是始终为0 我的想法是,既然dayrender能把数据添加入listbox_auto,那么明显添加后未能触发 自动保存数据进入隐藏域,以及自动postback,那么我可否手动引发一下自动保存与自动postback操作。
jimil 2014-05-27
  • 打赏
  • 举报
回复
猜测,dayRender事件虽然能把内容添加到listbox_auto中,但是,未能加入隐藏数据中。 隐藏数据是什么?
notback 2014-05-27
  • 打赏
  • 举报
回复
这个楼歪的来, 有没有点有建设性意义的回复呵。

62,039

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧