200分紧急求助,listbaox 保存状态

yaotiebing 2004-12-20 06:25:30
两个listbox 框 ,利用javascript 从一个框 选择内容到另一个框, 点一个按钮在服务器端进行保存操作,可是点击按钮 引起回发,选择的内容丢失 !急, 那位高手帮忙解决
...全文
248 31 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
yaotiebing 2004-12-22
  • 打赏
  • 举报
回复
就是加几个文本框来记录选择的值,比如ID了文本值了,提交到后台后,再重新设置一下。

.net是为了安全,所以才不认js加的东西

威什么 js到文本框的值就能保存呢??
xxwnet 2004-12-21
  • 打赏
  • 举报
回复
UP
posemanboy 2004-12-21
  • 打赏
  • 举报
回复
友情帮顶,关注ing
acco 2004-12-21
  • 打赏
  • 举报
回复
morality 2004-12-21
  • 打赏
  • 举报
回复
帮你顶一下!
白云在上 2004-12-20
  • 打赏
  • 举报
回复
楼上的说的对,你应该用Request取回ListBox的值。这是最直接也最好理解的。想想 asp 时代的做法吧。如果要与客户端编程交互,还是用这种方法好。
许野平 2004-12-20
  • 打赏
  • 举报
回复
你应该用Request取回ListBox的值!
自然框架 2004-12-20
  • 打赏
  • 举报
回复
就是加几个文本框来记录选择的值,比如ID了文本值了,提交到后台后,再重新设置一下。

.net是为了安全,所以才不认js加的东西
pangzhenjian 2004-12-20
  • 打赏
  • 举报
回复
其实很简单的如:



if listbox1.items(index).selected=ture then
listbox2.items.add(listbox1.selecteditem.text)

end if
老大刘 2004-12-20
  • 打赏
  • 举报
回复
if(obj != null)
lst.Items.Add(obj);

---------------------->
if(obj != null)
lstB.Items.Add(obj);

老大刘 2004-12-20
  • 打赏
  • 举报
回复
如果在从A选择内容到B的过程中,转移的项不需要从A中删除,则这个问题可以这样解决:
后台代码:

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!Page.IsPostBack)
{
...... }
else
{
//假设你的代码中两个ListBox分别定义为lstA,lstB;从A复 制数据项到B
//获取B中项的Value,用前台脚本动态设置的listItem项,在提交时必须先选定,我想获取选择项这步你应该也是这样处理的
string strSelectedID = Request["lstB"];

//重新设置lstB中的数据
//因为lstB中的项一定是lstA中的项,可直接从lstA中取数据
System.Web.UI.WebControls.ListItem obj;
string[] arrIDs = strSelectedID .Replace("'","").Split(',');
lstB.Items.Clear();
foreach(string id in arrIDs)
{
obj = lstA.Items.FindByValue(id);
if(obj != null)
lst.Items.Add(obj);
}

}

}

重新设置lstB中项的时机应该根据需要,上面只是个简单的例子
windancer 2004-12-20
  • 打赏
  • 举报
回复
同xuandme000(水丝游云) 的意思
windancer 2004-12-20
  • 打赏
  • 举报
回复
这还不如把ListBox2取过来的值 重新生成数据源(比如DataTable),然后和ListBox2绑定方便
xuandme000 2004-12-20
  • 打赏
  • 举报
回复
一个笨方法,在取值的时候根据listbox的内容在服务器端重新添加一次
iamwaiting1980 2004-12-20
  • 打赏
  • 举报
回复
学习
Nicholasqpl 2004-12-20
  • 打赏
  • 举报
回复
还要需要3个隐藏的文本框(txtcity_1,txtcity_2,txtcity_sel_id,)。
<body onload=webload()>
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<TABLE id="Table1" style="Z-INDEX: 101; LEFT: 8px; POSITION: absolute; TOP: 8px" cellSpacing="1"
cellPadding="1" width="300" border="1">
<TR>
<TD style="WIDTH: 296px"><FONT face="宋体"><SELECT style="WIDTH: 152px" id="sel_state" onchange="sel_change()">
<OPTION selected></OPTION>
</SELECT></FONT></TD>
<TD><SELECT style="WIDTH: 152px" id="sel_city" onchange="sel_change2()">
<OPTION selected></OPTION>
</SELECT></TD>
</TR>
<TR>
<TD style="WIDTH: 296px"><INPUT id="txtcity_1" type="hidden" name="Hidden1" runat="server"></TD>
<TD><INPUT id="txtcity_2" type="hidden" name="Hidden2" runat="server"></TD>
</TR>
<TR>
<TD style="WIDTH: 296px"><INPUT id="txtcity_sel_id" type="hidden" name="Hidden2" runat="server"></TD>
<TD>
<asp:Button id="Button1" runat="server" Width="152px" Text="你选择的城市ID"></asp:Button></TD>
</TR>
<TR>
<TD colSpan="2">
<asp:Label id="Label1" runat="server" Width="312px"></asp:Label></TD>
</TR>
</TABLE>
</FONT>
</form>
</body>


然后是后台的代码,主要是给前台得到数据:
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
// 在此处放置用户代码以初始化页面
if(!IsPostBack)
{
cityes cs_cityes = new cityes(connStr);
DataTable dt = cs_cityes.get_dt("topid = -1");
foreach(DataRow dr in dt.Rows)
{
this.txtcity_1.Value += dr["id"].ToString() + "-" + dr["name"].ToString() + ",";
}
this.txtcity_1.Value = this.txtcity_1.Value.Substring(0,this.txtcity_1.Value.Length - 1);

dt = null;
dt = cs_cityes.get_dt("topid > 0");
foreach(DataRow dr in dt.Rows)
{
this.txtcity_2.Value += dr["topid"].ToString() + "-"+ dr["name"].ToString() + "-" + dr["id"].ToString() + ",";
}

this.txtcity_2.Value = this.txtcity_2.Value.Substring(0,this.txtcity_2.Value.Length - 1);
}
}
Nicholasqpl 2004-12-20
  • 打赏
  • 举报
回复
用javascript来实现吧
给你一个例子:
这个是从后台来得到数据,然后在前台进行分级(比如:省份和城市),代码如下:
前台的javascript函数:
<script language=javascript>
<!--
function webload()
{
//先加载省份
var state = window.Form1.txtcity_1.value.split(",");
var stateID = new Array(state.length);
var stateVal = new Array(state.length);
for(i=0;i<state.length;i++)
{
var array=state.split("-");
stateID = array[0];
stateVal = array[1];
}

//先加载第一个"请选择省份"
var oOption_first = new Option();
oOption_first.value = 0;
oOption_first.text = "请选择省份";
window.Form1.sel_state.options[0] = oOption_first;

for(i=0;i<state.length;i++)
{
var oOption = new Option();
oOption.value = stateID;
oOption.text = stateVal;
window.Form1.sel_state.options[i+1] = oOption;
}


}

function sel_change()
{
//清空原来的
window.Form1.sel_city.options.length=0;

var city_id = null;
for(i=0;i<window.Form1.sel_state.length;i++)
{
if(window.Form1.sel_state.options.selected)
{
city_id = window.Form1.sel_state.options.value;
break;
}
}
if(city_id!=null)
{
var city = window.Form1.txtcity_2.value.split(",");
var citytopID = new Array(city.length);
var cityvVal = new Array(city.length);
var cityid = new Array(city.length);
for(i=0;i<city.length;i++)
{
var array=city.split("-");
citytopID = array[0];
cityvVal = array[1];
cityid = array[2];
}

//加载城市
var count = 1;

//先加载第一个"请选择城市"
var oOption_first = new Option();
oOption_first.value = 0;
oOption_first.text = "请选择城市";
window.Form1.sel_city.options[0] = oOption_first;

for(i=0;i<city.length;i++)
{
if(citytopID == city_id)
{
var oOption = new Option();
oOption.value = cityid;
oOption.text = cityvVal;
window.Form1.sel_city.options[count] = oOption;
count++;
}
}
}
}

function sel_change2()
{
for(i=0;i<window.Form1.sel_city.length;i++)
{
if(window.Form1.sel_city.options.selected)
{
window.Form1.txtcity_sel_id.value = window.Form1.sel_city.options.value;
break;
}
}
}
//-->
</script>
as12a 2004-12-20
  • 打赏
  • 举报
回复
当从一个框选择内容到另一个框时,

利用脚本加个值(比如ListBox.Item[].Value)到HtmlInputHidden里,

回传到服务器时,就可以得到HtmlInputHidden里的内容

当然对js得熟
gaoqixiang 2004-12-20
  • 打赏
  • 举报
回复
把被选中的值串成字符串放在一个Hidden中页面重新加载时判断Hidden中的值是否为null不是在重新付给listbox
WZCNet 2004-12-20
  • 打赏
  • 举报
回复
你要再</form>标记后加一段Javascript来重新绑定ListBox
加载更多回复(11)

62,243

社区成员

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

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

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

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