请问:如何处理这个客户端与服务器的冲突

TalkStudy 2004-09-21 06:43:34
我的控件是listbox
客户端:在页面的body的onload事件里面调用javascript脚本为listbox添加了若干条记录。然后,该页面通过服务器端的按钮事件在服务器端也要为listbox添加记录。可是这个时候就把客户端添加的记录全部冲掉了。

也就是在客户端添加的记录,在服务器端看不到。

我该怎么做啊?
谢谢!!!!!
...全文
129 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
TalkStudy 2004-09-22
  • 打赏
  • 举报
回复
请问飞鱼大哥,像我这种情况,能给出解决办法吗,改动比较小的解决办法!!谢谢了!
TalkStudy 2004-09-22
  • 打赏
  • 举报
回复
还是被冲掉。我觉得这样都没有解决本质的问题!!!
还是在客户端加的东西,服务器端认不到!

我觉得问题出在viewstate上。你说呢?
penning 2004-09-22
  • 打赏
  • 举报
回复
经常需要变值的控件,回发的数据并不依赖于ViewState。回发的控件都实现了IPostBackDataHandler接口,该接口的LoadPostData方法中,会对返回的值和ViewState中的值进行判断,如果改变了的话,调用RaisePostDataChangedEvent方法触发相应的事件(对于TextBox来说就是TextChanged事件)。LoadPostData中如果返回的值和ViewState中的值不同的话,将把TextBox的值设置成返回的值。这就是你看到的结果。而listbox的值不会Post回服务器,服务器控件listbox的状态是保存在ViewState里面,你在客户端改了也没有用。
ryg221 2004-09-22
  • 打赏
  • 举报
回复
试试这个:
在Page_Load里:
if(IsPostBack)
{
Response.Write("<script>GetFiles();</script>");
}
TalkStudy 2004-09-22
  • 打赏
  • 举报
回复
还是不行!!!如果能知道为什么会冲掉就好了!像hidden的值在提交的时候就不会被冲掉啊!!

为什么post的时候不能一块post到服务器端啊!!
ryg221 2004-09-22
  • 打赏
  • 举报
回复
我知道了,你是按纽的postback把原来的冲掉了,
你在PageLoad里加
btnAttach.Atrributes.Add("onclick","GetFiles();");
TalkStudy 2004-09-22
  • 打赏
  • 举报
回复
aspx:
<body onload="GetFiles()">

function GetFiles()
{
if (document.all("listFiles").options.length == 0)
{
var dorpdownlist = window.opener.document.all("ddlFiles");
var fileCount = dorpdownlist.options.length; for (i=0; i<fileCount; i++)
{
var opt = new Option (dorpdownlist.options[i].text,dorpdownlist.options[i].value);
document.all("listFiles").options.add(opt);

}
}
}

cs:

private void btnAttach_Click(object sender, System.EventArgs e)
{


this.listFiles.Items.Add(new ListItem(fileName,fileName));
}

这个时候就把客户端添加上去的记录全部清空!!
郁闷!!!!
ryg221 2004-09-22
  • 打赏
  • 举报
回复
服务端帮顶的代码贴一下看
TalkStudy 2004-09-22
  • 打赏
  • 举报
回复
自己顶一下!!!!!
TalkStudy 2004-09-22
  • 打赏
  • 举报
回复
我试了一下:
在服务器端如果这样:int count = this.listFiles.Items.Count
这个时候count = 0;

如果这样string list = Request.Form["listFiles"];list的内容是在客户端选中的一条记录,而不是全部,没有办法遍历
还有为什么Request.Form["listFiles"] 返回的只能是string 而不是控件啊

谢谢了!!!!
athossmth 2004-09-21
  • 打赏
  • 举报
回复
楼上说得对,在pageload时用request.form["DropDownListId"]取得客户端传回的控件,然后逐一添加
wangrenda 2004-09-21
  • 打赏
  • 举报
回复
你在服务器端遍历一下原有值,
重新添加全部值

62,254

社区成员

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

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

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

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