关于使用javascript改变诸如ListBox控件的各个Item的值及顺序后怎么获取改变后的顺序
2005-04-26 17:17
537 查看
方法:
每当改变顺序或者改变值后都将当前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;
}
每当改变顺序或者改变值后都将当前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;
}
相关文章推荐
- 关于使用JavaScript实现图片点击切换(附带改变导航图片 方案二)
- 关于获取Gridcontrol中repositoryItemLookUpEdit的使用
- Effective JavaScript Item 46 优先使用数组而不是Object类型来表示有顺序的集合
- 关于使用JavaScript实现图片点击切换(附带改变导航图片 方案一)
- Effective JavaScript Item 46 优先使用数组而不是Object类型来表示有顺序的集合
- 关于CTE的使用,以及TOP/ORDER BY的执行顺序
- 今天需要获取一个网站的web服务反馈回来的数据,找到份不错的帖子关于WebClient类的使用,记录下来·
- 关于java使用HttpClient获取环信功token
- 你不知道的JavaScript--Item14 使用prototype的几点注意事项
- 使用javascript获取文本框,下拉框,单选框的值并且赋值
- IE中使用并且安全级别为低级时!javascript可以获取客户端电脑MAC地址
- javascript 选项卡,循环获取并改变元素值
- [zt]关于跨进程使用回调函数的研究:以跨进程获取Richedit中RTF流为例
- 关于RMS中使用RecordEnumeration遍历顺序乱的问题
- 关于跨进程使用回调函数的研究:以跨进程获取Richedit中RTF流为例。
- 关于用javascript改变class所用的setAttribute()方法
- 关于C使用指针获取二维字符数组信息
- JavaScript打开窗口函数(Window.Open)使用详解、绝对路径与相对路径的获取与转换(含ASP.NET)
- 怎么设置viewpager在使用setCurrentItem的滑动速度
- 关于spring使用@value注解获取properties文件属性问题