复制 DropDownList 之后,莫名其妙的“同步选择”,奇怪的问题。

BestAns1 2003-04-16 08:53:15
我在 web 窗体上放了两个 DropDownList,我初始化了 DropDownList1:
DropDownList1.Items.Add("abc");
DropDownList1.Items.Add("def");
DropDownList1.Items.Add("hijklmn");
(略去了实际读取数据库的代码)

然后我想把 DropDownList2 做的和 DropDownList1 一样,我用了下面的两种方法:
方法一:
ListItem[] items = new ListItem[DropDownList1.Items.Count];
DropDownList1.Items.CopyTo(items, 0);
DropDownList2.Items.AddRange(items);

方法二:
foreach (ListItem li in DropDownList1.Items)
DropDownList2.Items.Add(li);
(无论用哪种方法,都会导致下面的结果)

我执行
DropDownList2.SelectedIndex = 2;

奇怪的是,DropDownList1 也被默认选中了 2,也就是说,无论怎么样,DropDownList2 选中哪个,DropDownList1 就选中哪个。程序没有别的代码。上面的代码都放在了 Page_Load 里面。

究竟为什么会这样?怎么解决?
...全文
91 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
BestAns1 2003-04-23
  • 打赏
  • 举报
回复
to timmy3310(Tim):
"纠正你一个观点,代码很多、很罗嗦不一定代表效率低,要看你调用方法的效率,就像Array.Copy的方法,它里面还不是循环复制,只是这个循环他帮你写了,不用你自己写而已"
这个我明白。但很多时候,罗嗦的代码效率就是低。比如,你能说 a=a+1 的效率和 a++ 一样吗?数组拷贝不一定是代码层的循环复制,很可能是复制整片内存,而且可以不必每次都判断循环超限情况。
虽然目前没必要扣这么细……
BestAns1 2003-04-23
  • 打赏
  • 举报
回复
终于明白了。解决了!

平均散分!
timmy3310 2003-04-18
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/1665/1665825.xml?temp=.7209741

这个贴子里面我给你的复制方法是可以复制的,但是是复制引用,所以会出现你的情况,如果按照这种方式复制,不出现这种情况才是不正常

按照你的要求,那么只有复制Value

"如果要同时复制 value,那整个语句岂不是显得很啰嗦?而且效率上也低一些。"

纠正你一个观点,代码很多、很罗嗦不一定代表效率低,要看你调用方法的效率,就像Array.Copy的方法,它里面还不是循环复制,只是这个循环他帮你写了,不用你自己写而已

你的代码应改为:
foreach (ListItem li in DropDownList1.Items)
DropDownList2.Items.Add( new ListItem(li.Text,li.Value) );
BestAns1 2003-04-16
  • 打赏
  • 举报
回复
up......
Knight94 2003-04-16
  • 打赏
  • 举报
回复
试试这样:
for(int i=0;i<DropDownList1.Items.Count;i++)
DropDownList2.Items.Add(DropDownList1.Items[i].ToString());
layershow 2003-04-16
  • 打赏
  • 举报
回复
hoho
试试 把代码加上 if (!IsPostBack) { .... } 先.

BestAns1 2003-04-16
  • 打赏
  • 举报
回复
to layershow(绿叶兄): 和 IsPostBack 没关系吧?

to Knight94(愚翁): 如果要同时复制 value,那整个语句岂不是显得很啰嗦?而且效率上也低一些。

有没有别的办法?还有,为什么会这样?

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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