사용자 삽입 이미지








 ▲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>");
    }
}

+ Recent posts