▲listbos1(다중선택) ▲listbox2(다중선택)
listbox1에서 여러개의 item을 다중선택하여 listbox2로 추가하였을 때
문제점)
1. listbox1의 selected 속성이 0번 index를 제외하고 모두 false로 된다.
즉, 2번, 3번의 index를 선택하여도 0번index의 item만이 listbox2로 추가된다.
해결한 방법)
listbox에는 DataTextField 와 DataValueField 의 속성을 가지고 있는데 이 중에 DataValueField의 값을 모두 같게 둔다면 위와 같은 현상이 일어날 수 있다.
(test를 위해서 DataValueField의 값을 모두 같게 주었었다...ㅡ.ㅡ;;...)
<추가 사항>
---------------------------------------------------
첫번째, 아이템을 추가할때
<input type=hidden runat=server id=hdnItems> 필드에 내용을 저장하는 방법입니다...
function AddItem()
{
//아이템 추가
//추가된 아이템의 값저장(예, 1;2;3;4; )
document.all['<%=hdnItems.ClientID%>'].value += '추가된 아이템의 value값' + ';';
}
서버컨트롤 실행후
void Button1_Click()
{
string[] items = this.hdnItems.Value.Split(';');
foreach(string item in items)
{
Response.Write(item + "<br>");
}
}
두번째, 포스트백을 일으키는 버튼을 클릭했을때
<input type=hidden runat=server id=hdnItems> 필드에 내용을 저장하는 방법입니다...
function SaveItems()
{
var lb = document.all['<%=ListBox1.ClientID%>'];
var hval = document.all['<%=hdnItems.ClientID%>'];
var temp = '';
for(var i=0; i<lb.length; i++)
{
temp += lb.options[i].value + ';'
}
hval.value = temp;
}
위의 스크립트를 버튼을 클릭했을때 넣어주면 되겠죠^^
this.Button1.Attributes[""] = "SaveItems();";
void Button1_Click()
{
string[] items = this.hdnItems.Value.Split(';');
foreach(string item in items)
{
Response.Write(item + "<br>");
}
}