2

我正在尝试使用所选项目信息(属性)更新文本框。我可以获取选定的项目名称而不是 Id,或者换句话说,如何在选择项目时获取我的 ViewData 中的内容的属性,然后将其设置为 txtbox?

         @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> 
4

1 回答 1

3

ListBox 与 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>

如您所见,您有关于 DOM 中的 id 和文本的信息。如果您想获取有关所选项目的其他信息,您需要向服务器发送 AJAX 请求并传递所选 id 以检索它。因此,如果您只想显示文本:

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

每次用户单击列表框中的click元素时,处理程序都会运行,但只有当他选择了该项目时才会满足 if 条件。

于 2012-04-14T06:41:28.177 回答