就是向ListBox Add两个一样的ListItem,当选中第一个ListItem时,ListBox的SelectedIndex为0,当选中第二个ListItem时,ListBox的SelectedIndex还是为0,应该为一了才是我想要的。
注意我说的是:Add两个一样的ListItem
比如 listItem li1;
li1.Text="a";
li1.Value="1";
添加两次:
ListBox lb.Add(li1);
lb.Add(li1);
注意我说的是:Add两个一样的ListItem
比如 listItem li1;
li1.Text="a";
li1.Value="1";
添加两次:
ListBox lb.Add(li1);
lb.Add(li1);
我觉得这应该这是LISTBOX在服务器端恢复的时候是根据VALUE值来判断选中项的。没有其它的办法.只有自己恢复LISTBOX的SELECTEDINDEX的值:
1.在LISTBOX声明中加入ONCHANGE客户端事件
2.在页面中加入一个隐藏控件 ,用来放INDEX值
3。ONCHANGE如下
function getindex()
{
var p = document.getElementById("ListBox1");
var d = p.options;
for(var i=0;i<d.length;i++)
{
if(d[i].selected)
{
var h = document.getElementById("Hidden1");
h.value = i;
}
}
}
4.在服务端当要LISTBOX的selectedindex的值时,根据 h.value来设置LISTBOX的selectedindex
5。这样就可以了
页面:
<form id="Form1" method="post" runat="server">
<asp:ListBox id="ListBox1" onchange="get()" style="Z-INDEX: 101; LEFT: 392px; POSITION: absolute; TOP: 176px"
runat="server">
<asp:ListItem Value="21">21</asp:ListItem>
<asp:ListItem Value="21">21</asp:ListItem>
<asp:ListItem Value="wwew">wrewrwew</asp:ListItem>
</asp:ListBox>
<INPUT id="Hidden1" value="-1" style="Z-INDEX: 102; LEFT: 224px; POSITION: absolute; TOP: 248px" type="hidden"
name="Hidden1" runat="server">
<asp:Button id="Button1" style="Z-INDEX: 103; LEFT: 256px; POSITION: absolute; TOP: 80px" runat="server"
Text="Button"></asp:Button>
</form>
<script language="javascript">
function get()
{
var p = document.getElementById("ListBox1");
var d = p.options;
for(var i=0;i<d.length;i++)
{
if(d[i].selected)
{
var h = document.getElementById("Hidden1");
h.value = i;
alert(h.value);
}
}后台代码
private void Button1_Click(object sender, System.EventArgs e)
{
int index = int.Parse(Hidden1.Value);
ListBox1.SelectedIndex = index;
Response.Write(ListBox1.SelectedIndex.ToString());
}