2012-04-14 39 views
2

我试图用所选项目信息(属性)更新文本框。我可以得到选择的项目名称而不是Id,或者换句话说,如何在javascript中选择一个项目然后将其设置为txtbox时,如何获取ViewData中的Whats的属性?使用javascript选择列表框项目时更新文本框的信息

  @Html.ListBox("ListBoxName", new SelectList((IEnumerable<Epic>)ViewData["selectedestimate"], "Id", "Name", "EstimatedTime"), new {@class = "ListBoxClass", @style = "height: 325px;"}) 
     @Html.TextBoxFor(model => model.Name, new {@class = "TimeClass"}) 



    <script type="text/javascript"> 
     $(function() { 
      $(".ListBoxClass").click(function (event) { 
     var selectedid = $(this).find("option:selected").val(); 

     // get items properties and info so that the value can be set to a textbox 
     //set textbox value to Name of selected Value 
     $(".TimeClass").val(selectedid); 
     event.preventDefault(); // Stop the browser from redirecting as it normally would 
     $.get('@Url.Action("UserStoriesList", "Estimate")', { id: selectedid }, function (result) { 
      $('#stories').html(result); 
     }); 
    }); 
}); 
    </script> 

回答

3

列表框就像一个DropDownList,只是它允许选择多个项目。它使用相同的HTML标记(<select>),但它添加了multiple属性。因此,渲染时您的标记看起来就像这样:

<select id="ListBoxName" name="ListBoxName" multiple="multiple"> 
    <option value="id1">text 1</option> 
    <option value="id2">text 2</option> 
    <option value="id3">text 3</option> 
    ... 
</select> 

所以你可以看到你对id和DOM中的文本信息。如果您想获取有关所选项目的其他信息,则需要向服务器发送AJAX请求并传递选定的ID以检索它。所以,如果你只是想显示文本:

$(function() { 
    ​$('.ListBoxClass option')​.click(function() { 
     if ($(this).is(':selected')) { 
      var selectedId = $(this).val(); 
      var selectedText = $(this).text(); 
      $('.TimeClass').val(selectedText); 
      ... 
     } 
    });​ 
}); 

click处理程序将运行每次在列表框中的元素用户点击,但如果条件将是唯一的,如果他选择的项目满足。