在我的Web应用程序中,我从JavaScript向表中添加新行。
行中有一个元素,对于I'm loading data from the ViewBag。
另外,我想将Select2类添加到同一个元素中。
这是我现在的代码。
<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
<script src="~/Scripts/jquery-3.6.4.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
<div class="table-responsive text-nowrap">
<table class="table table-striped" id="submissionTable">
<thead>
<tr>
<th>#</th>
<th>ITEM</th>
<th>QTY</th>
<th>MEASURE BY</th>
<th>UNIT PRICE</th>
<th>LINE TOTAL</th>
</tr>
</thead>
<tbody class="table-border-bottom-0">
<tr id="tablerow0"></tr>
</tbody>
</table>
<p>
<button id="add" type="button" class="btn btn-primary">Add</button>
</p>
</div>
这就是javascript
var counter = 1;
var dropdownOptions = @Html.Raw(Json.Encode(ViewBag.Item_ID));
$(function () {
$("#add").click(function () {
var newRow = $(
'<tr id="tablerow' +
counter +
'" class ="poSet"> ' +
"<td>" +
'<label id="CountItems"><strong>' +
counter +
"</strong></label>" +
"</td>" +
'<td width="40%">' +
'<select onchange="sendInfo(this)" class="form-select ItemId" data-id= ' + counter + ' name="Item_Id[' +
counter +
']" id="ItemId[' + counter + ']" required="required" ' +
"</select>" +
"</td>" +
'<td width="10%">' +
'<input type="text" class="form-control Qty" name="Qty[' +
counter +
']" value="1" id="Qty[' + counter + ']" onchange="calQtyBase(this)" data-QtyId= ' + counter + ' required="required" />' +
"</td>" +
'<td width="10%">' +
'<input type="text" class="form-control" name="MeasureBy[' +
counter +
']" value="" id="MeasureBy[' + counter + ']" readonly />' +
"</td>" +
'<td width="20%">' +
'<input type="text" class="form-control UnitPrice" name="Unit_Price[' +
counter +
']" value="0.00" id="UnitPrice[' + counter + ']" onchange="priceBase(this)" data-PriceId= ' + counter + ' required="required" />' +
"</td>" +
'<td width="20%">' +
'<input type="text" class="form-control LineTotal" name="Line_Total[' +
counter +
']" value="0.00" id="LineTotal[' + counter + ']" required="required" />' +
"</td>" +
"<td>" +
'<button type="button" class="btn btn-danger" onclick="removeTr(' +
counter +
');">x</button>' +
"</td>" +
"</tr>"
);
var selectElement = newRow.find("select");
dropdownOptions.forEach(function (option) {
var optionElement = $("<option>").val(option.Value).text(option.Text);
selectElement.append(optionElement);
});
newRow.appendTo("#submissionTable");
selectElement.select2();
counter++;
return false;
});
});
所以当我加上这个的时候,视图就变成这样了
当我第一次添加时,数据元素宽度是默认的,然后它会发生变化。
- *Select 2**组合框的视图也有问题。我认为缺少一个表单控件类或其他东西,它看起来就像一个没有CSS的组合框。
我该怎么解决这些问题?
1条答案
按热度按时间snvhrwxg1#
要让select2下拉唐斯填充可用宽度,最简单的选择是将
width:100%
添加到select 2参数:还有其他选项,如设置style=,但IMO上面的是最简单和最一致的。
如果你的select2看起来像一个正常的
select
,那么它可能是一个正常的选择,并没有select 2应用-或者,css可能没有加载正确(例如错误/阻塞路径)-或者可能有冲突的css,如果你有另一个css库(例如引导),所以你可能需要额外的css调整/插件;这取决于具体的问题--它应该做一些事情。请注意,如果您的选择是在某种对话框中,select2需要额外的参数(它会影响下拉列表本身,这似乎不是您的问题,只是注意到它)
在下面的代码片段中,它按预期工作。
更新片段: