2012-04-11 3 views
0

현재 ASP.NET을 사용하는 C# 프로젝트에서 작업 중입니다. 그리고 나는 dropboxes의 목록을 구현하고 싶습니다. 따라서 사용자는 보관 용 계정으로 시작하여 방법을 선택할 수 있으며 보관 용 계정 옆에있는 + 및 - 버튼을 사용하면 더 많은 보관 용 계정을 추가 할 수 있습니다. 그래서 어떻게 구현할 수 있습니다 ASP.NET에서 dropboxes 목록을 빌드 할 수 있습니다 궁금해?C에서 Dropboxes 목록을 구현하는 방법

+3

안녕, 세나는 ... 당신이 이미 시도 몇 가지 구체적인 예, 또는 적어도 일을 줄 수 있을까? –

+0

구현 방법에 대한 아이디어가 없기 때문에 나는 아무것도 가지고 있지 않습니다 ... 아이디어 pls가 필요합니다. 현재 라디오 버튼을 사용하여 구현했습니다. 사용자가 라디오 버튼을 클릭하고 드롭 박스가 활성화되어 있지만 모듈화되어야하며 사용자는 여러 순서로 여러 메소드를 사용할 수 있어야합니다. – senna

+0

의미 : dropbox (모든 방법 포함) + 버튼 및 - 버튼 – senna

답변

2

클라이언트 사이드 스크립팅은 사용자의 필요에 맞는 이상적인 솔루션입니다.

<script type="text/javascript"> 
var added_counter = 0; 

function AddDropDown(sender) { 
    var parent = sender.parentNode; 

    //make fresh clone: 
    var oClone = parent.cloneNode(true); 

    //append to main placeholder: 
    parent.parentNode.appendChild(oClone); 

    //store change in global variable: 
    added_counter++; 
} 

function RemoveDropDown(sender) { 
    //don't allow to remove when there is only one left 
    if (added_counter <= 0) { 
     alert("One drop down must exist"); 
     return; 
    } 

    var parent = sender.parentNode; 

    //disable so value won't be passed when form submitted: 
    parent.getElementsByTagName("select")[0].disabled = true; 

    //hide: 
    parent.style.display = "none"; 

    //store change in global variable: 
    added_counter--;  
} 
</script> 

코드는 의견을 가지고 있지만, 당신은 더 이상 설명이 필요 물어 주시기 바랍니다 : 당신은 다음과 같은 순수 자바 스크립트가 작동해야

<div id="MainPlaceholder"> 
    <div id="DropDownPlaceholder"> 
     <select name="myDropDown"> 
      <option value="1">First</option> 
      <option value="2">Second</option> 
      <option value="3">Third</option> 
     </select> 
     <button type="button" onclick="AddDropDown(this);">+</button> 
     <button type="button" onclick="RemoveDropDown(this);">-</button> 
    </div> 
</div> 

:

같은 HTML을 갖는 .

Live test case.

편집 : 서버 측 코드에서 선택한 값을 읽을 필요로, 더 나은 방법이 아래로 복제 된 각 드롭의 이름을 변경하는 것입니다 :

var totalAddedCounter = 0; 

function AddDropDown(sender) { 
    var parent = sender.parentNode; 

    //make fresh clone: 
    var oClone = parent.cloneNode(true); 

    //assign unique name: 
    oClone.getElementsByTagName("select")[0].name += "_" + totalAddedCounter; 

    //append to main placeholder: 
    parent.parentNode.appendChild(oClone); 

    //store change in global variable: 
    added_counter++; 
    totalAddedCounter++; 
} 

이제 까다로운 부분은 사람들을 읽고 값. 대신 dropboxlistID.Text 일반 당신은 당신이 필요로하는 무엇을 찾고 게시 된 값을 반복해야합니다 :

foreach (string key in Request.Form.Keys) 
{ 
    if (key.StartsWith("dropboxlistID")) 
    { 
     string text = Request.Form[key]; 
     //..... 
    } 
+0

대단히 감사합니다. 정확히 내가 찾고 있던 것이 었습니다! – senna

+0

@senna 환호, 도와 줘서 기쁩니다. :) –

+0

하지만이 질문을 내 코드에 추가하려고했지만 한 가지 질문이 떠 올랐습니다. asp.net 사용하고 테이블에 포함 된 DropDownList 사용하고 있습니다. 그래서 내가 알아야 할 것은 무엇입니까? – senna

관련 문제