关于使用&#106avascript改变诸如ListBox控件的各个Item的值及顺序后怎么获取改变
2024-07-21 02:15:54
供稿:网友
方法:
每当改变顺序或者改变值后都将当前listbox的所有item,通过for()循环将值保存在hidden标签中,这个hidden标签只能是html控件(记住:不能使用服务器控件textbox,
因为把visible设置为false后,页面上就不会有这个元素了,而javascript也会因为没有对应的元素而出错),最后回送到服务器时通过一个分解函数分解出正确的顺序和值
。
具体:
脚本
<script language="javascript">
<!--
function remembernow()
{
//记录当前的选择项,将当前列表中的值及顺序保存在hidden中
//lstresult是服务器控件listbox
//txtselecteditems是<input type=hidden>
var count;
var str="";
count=form1.lstresult.options.length;
for(var i=0;i<count;i++)
{
str+=form1.lstresult.options[i].value + "," + form1.lstresult.options[i].text + ";";
}
form1.txtselecteditems.value=str;//例如:1,冷侠;2,轻轻飞舞;
}
//-->
</script>
服务器端代码:
private void page_load(object sender, system.eventargs e)
{
try
{
//将修改后的顺序及值填充到目标listbox
//parseit函数用于分解出正确的值及顺序
lstresult.datasource=parseit(txtselecteditems.value);
lstresult.datavaluefield="id";
lstresult.datatextfield="name";
lstresult.databind();
}
catch(exception ex)
{
response.write(ex.message);
}
}
private icollection parseit(string str)
{
datatable dtl=new datatable();
dtl.columns.add(new datacolumn("id"));
dtl.columns.add(new datacolumn("name"));
int i=0;
int j;
while((j=str.indexof(";",i))>=0)
{
string tmp;
tmp=str.substring(i,j-i);
string parsenumber,parsename="";
parsenumber=tmp.substring(0,tmp.indexof(","));
parsename=tmp.substring(tmp.indexof(",")+1,tmp.length-tmp.indexof(",")-1);
try
{
datarow dr=dtl.newrow();
dr["id"]=convert.toint32(parsenumber);
dr["name"]=parsename;
dtl.rows.add(dr);
}
catch
{}
i=j+1;
}
dtl.acceptchanges();
return dtl.defaultview;
}
本文来源于网页设计爱好者web开发社区http://www.html.org.cn收集整理,欢迎访问。