2013-08-01 4 views
0

5 개 드롭 다운 목록이 있습니다. 내가 DropDownlist에 "선택"을 쓰고 싶다면, DropDownlist를 열었을 때 사라지게하고, 다시 표시하지 마십시오. 새 항목을 추가하고 삭제하여이 작업을 처리했지만 Item.Add (새 ListItem .....)를 사용하지 않고 수행 할 수있는 방법이 있습니까?새 항목을 만들지 않고 DropDownlist에 텍스트 쓰기

또한 새로운 항목을 사용하지 않으려 고했지만 (괜찮을 수도 있음) "선택"을 완전히 숨기고 DropDownlist를 클릭하지 않으면보고해야합니다.

$('#<%=ddl.ClientID%>').focus(function() {   
     var hasValue = '<%=IfHasValue()%>';   
     if (hasValue == 'True') 
     { 
      if(!removed){ 
       var index = $('#<%=ddl.ClientID%>').get(0).selectedIndex; 
       $('#<%=ddl.ClientID%> option:eq('+index+')').remove(); 
       removed = true; 
      } 
     } 

이 코드가 작동하지만 (항목이 삭제 될 때) 드롭 다운리스트가 첫 번째 클릭에 열려하지 않았다, 나는 그것을 열고 항목이 삭제되거나되지 않은 경우 (그것이)를 참조 다시 클릭해야합니다.

몇 가지 조언을 해주실 수 있습니까?

P.S 죄송합니다.

+0

'disabled'및'selected' 속성을 ListItem에 적용하면 찾고있는 동작이 결과 여야합니다. 다른 방법으로 DropDownList를 재정의 할 수 없으므로 거의 사용하지 않습니다. –

답변

0

첫째을 사용하여 클라이언트에서 드롭 다운리스트를 얻을 수있는 진정한 AppendDataBoundItems와 아래로 당신의 하락을 선언

<asp:dropdownlist id="ddl" runat="server" AppendDataBoundItems="true" > 
    <asp:ListItem Value="0" Text="[ Select ]" Selected="True"></asp:ListItem> 
</asp:dropdownlist> 

지금 당신의 코드 숨김에서 일반적으로 바인딩 할. 페이지가 렌더링되면 첫 번째 옵션으로 "선택"옵션이 표시됩니다.

지금, jQuery를 또는 자바 스크립트를 사용하여 드롭 다운에 "클릭"이벤트를 바인딩 :

$('#ddl').click(function() { 
    // Either pre-select the next option before removing 
    //$("#ddl")[0].selectedIndex = 1; 

    $("#ddl option[value='0']").remove(); 

    // Or select the next option after removal 
    $("#ddl")[0].selectedIndex = 0; 
}); 

이 제거됩니다 "선택"옵션 (값 "0"). 클릭 할 때마다 값이 "0"인 옵션이 제거됩니다. 처음에는 찾아서 제거합니다. 이후에는 그러한 옵션을 찾지 못하므로 아무 것도하지 않습니다.

이 특정 옵션에 고유 한 값을 지정하십시오.

편집 : 또는

이 제거가 마우스 버튼을 위로하기 전에 발생하는 것을 클릭을 통해 등록되어있는, 그래서 당신은 "초점"바인딩 할 수 있습니다.http://jsfiddle.net/kne6K

는 먼저 다음 옵션을 미리 선택해야합니다 : 여기

$('#ddl').focus(function() { 
    $("#ddl")[0].selectedIndex = 1; 
    $("#ddl option[value='0']").remove(); 
}); 

는 작업 바이올린입니다.

+0

답변 해 주셔서 감사합니다 :) 문제는 - 이미 해냈고 완벽하게 작동하지만 잠시 있습니다. 드롭 다운 목록을 클릭하면 "선택"이 제거되지만 새 항목을 선택하기 위해 드롭 다운 목록을 열지 않으므로 다시 클릭해야합니다 (항목을 다시 제거하지 못하게하려면 필요한 모든 보호 기능이 있습니다). 이것이 제가 도움을 청한 이유 중 하나입니다 ... –

+0

답변을 업데이트했습니다. 제거하기 전에 다음 옵션을 미리 선택하거나 제거한 후 첫 번째 옵션을 선택할 수 있습니다. – Abhitalks

+0

또는 "클릭"에 바인딩하는 대신 "포커스"를 바인딩하여 클릭이 등록되기 전에 제거되도록 할 수 있습니다. 포커스가 +1 – Abhitalks

0

로드 할 경우 첫 번째 항목을 select로 바꿀 수 있습니다. 당신이 당신의 DDL에 특별한 값을로드 한 후이 작업을 수행 :

DropDownList.Attributes.Add("onclick", "return ChangeTextBack()") 

그런 다음 aspxcode이 추가 :

<script language="javascript" type="text/javascript"> 

function ChangeTextBack() { 

var RI = '<%= Session["ReplacedItem"].ToString() %>';var 
select=document.getElementById("DropDownList1"); 
select.options[0].text=RI; 
return false; 

} 

+0

jQuery 도움말을 사용하여 DropDownlist를 클릭 할 수있었습니다 :) 답변 해 주셔서 감사하지만, 항목이 텍스트 일지라도 항목을 변경하면 나에게 좋지 않을 것입니다. –

+0

텍스트를 변경하면 왜 나쁜가요? 세션에 저장하고 텍스트를 변경 한 다음 다시 변경하십시오. Javascript를 사용하면 OnClick 이벤트에서 다시 변경하는 함수를 추가 할 수 있습니다. OnClick 이벤트는 다음과 같이 등록 될 수 있습니다 :'DropDownList.Attributes.Add ("onclick", "function")' – DatRid

+0

각 항목 및 특수 값에 생성 된 텍스트가 있습니다. 나는 그 때 새로운 문제를 얻을 것이다 (항목의 모든 데이터를 복원하는 방법). –

0

Session["ReplacedItem"] = DropDownList.Items[0].Text; // Store your old Text here 
DropDownList.Items[0].Text = "Select"; 

그 다음의 OnClick 함수를 추가

드롭 다운의 options 컬렉션 시작 부분에 새 항목 추가 페이지가로드 될 때 클라이언트에 ist가 있고 onchange 이벤트 체크에서이 항목이 콜렉션에 존재하는지 확인한 다음 제거하십시오.

는 모든 $get("<%= DropDowwnlist.ClentID%>")

+0

이미 완료했습니다. 나는 다른 해결책을 물었다. (그러나 대답에 대해 감사한다.) –

관련 문제