关于使用javascript改变诸如ListBox控件的各个Item的值及顺序后怎么获取改变后的顺序

王朝html/css/js·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

方法:

每当改变顺序或者改变值后都将当前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;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有  導航