關于使用&#106avascript改變諸如ListBox控件的各個Item的值及順序后怎么獲取改變
2024-07-21 02:15:54
供稿:網友
方法:
每當改變順序或者改變值后都將當前listbox的所有item,通過for()循環將值保存在hidden標簽中,這個hidden標簽只能是html控件(記?。翰荒苁褂梅掌骺丶extbox,
因為把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收集整理,歡迎訪問。