【问题标题】:Set Bootstrap Accordion with specific id设置具有特定 id 的 Bootstrap Accordion
【发布时间】:2019-03-20 20:46:44
【问题描述】:

我有一个表格显示每个订单中的许多错误。每行显示特定顺序的错误数。我想在该行的末尾添加一个“查看”按钮,当用户单击它时,该行将像手风琴一样展开并显示错误列表。

 OrderId    Order From   Number of Error    Button
 ---------------------------------------------------
     1          A              4             See
     2          B              3             See
     3          C              2             See

当用户点击第 2 行的查看按钮时

 OrderId    Order From   Number of Error    Button
 ---------------------------------------------------
     1          A              4             See
     2          B              3             See
     Error 1- 
     Error 2-
     Error 3-
     3          C              2             See

我不知道如何将行与相关错误关联/链接

 @{int i = 0;}
 @foreach (var item in Model.OrderList)
 {
     i++;
     <tr>
        <td>
            @Html.DisplayFor(ID)
        </td>
        <td>
             @Html.DisplayFor(FROM)
        </td>
        <td>
            @Html.DisplayFor(NumberOfError)
        </td>
        <td class="text-right">
<a class="btn btn-warning" data-toggle="collapse" href="#@i" role="button" aria-expanded="false" aria- 
controls="multiCollapseExample:@i">Toggle</a>
                </td>
            </tr>
            <tr class="collapse multi-collapse" id="@i">
                <td colspan="3">
                    Error 1
                    Error 2
                    Error 3
                </td>
            </tr>

enter code here

我知道我需要将 anchor href="#" 标签设置为 class="collapse multi-collapse" id="",但 Bootstrap 不喜欢我以“1abc”或“abc”之类的数字开头: 1"。我不能以数字开头,也不能在 id 或 href 中使用“:”。

我厌倦了“abc@{i}”它说 i 是变量不能这样使用 试过这个 "abc:@i" 没有错误但没用,还有 ":@iabc" 或只是 "@i"

【问题讨论】:

    标签: c# twitter-bootstrap asp.net-core


    【解决方案1】:

    如果您正在创建 tr,您可以显示隐藏下一个 tr。 使用 jquery 来切换下一个 tr 很简单。

    @{int i = 0;}
     @foreach (var item in Model.OrderList)
     {
         i++;
         <tr>
            <td>
                @Html.DisplayFor(ID)
            </td>
            <td>
                 @Html.DisplayFor(FROM)
            </td>
            <td>
                @Html.DisplayFor(NumberOfError)
            </td>
            <td class="text-right">
            <button type="button" class="btn btn-primary btn-sm" onclick="changeToggle(this)">See <i class="fa fa-arrow-down" ></i></button>
                    </td>
                </tr>
            <tr class="collapse" style="display:none;">
                <td colspan="3">
                    Error 1
                    Error 2
                    Error 3
                </td>
            </tr>
            }
    <script>
    
    
    function changeToggle(btn){
            $(btn).find(i).removeClass("fa-arrow-up");
            $(btn).find(i).removeClass("fa-arrow-down");
        if($(btn).closest( "tr" ).next().css('display') == 'none'){
            $(btn).find(i).addClass("fa-arrow-down");
            $(btn).find(i).removeClass("fa-arrow-up");
        }else{
            $(btn).find(i).removeClass("fa-arrow-down");
            $(btn).find(i).addClass("fa-arrow-up");
        }
        $(btn).closest( "tr" ).next().toggle();
    }
    
        </script>
    

    【讨论】:

    • 也可以添加toggle的动画属性。
    • 谢谢阿里.. 很大的帮助。另外,我只是在您使用此代码回复之前修复了它。 href="#RowToggle-@i " 我不知道为什么,但我知道使用 "-@i" 是怎么回事
    • 当我将网站上传到服务器时,我的解决方案不起作用。它打开手风琴,但在没有点击后折叠它。我的意思是自动关闭。不知道为什么。无论如何,我在上面使用了您的代码并且它有效。非常感谢。
    • 嗨,阿里。再问一个问题。我想在手风琴关闭时更改箭头样式当用户单击并打开手风琴时,箭头向下,箭头会向上。 我知道在 Jquery 中我可以像 $("#btn i") 那样做,但是因为我在行中使用了“this”,所以我不能用这种方式..你能帮我吗
    • 如果你在按钮中有 ,那么你必须检查 tr 是显示还是隐藏,所以你需要这个。 $(btn).closest("tr").next().css('display') == 'none'。在 if 条件下使用它,如果为真,则将类添加到 $(btn).find("i").addClass("fa-arrow-down");并删除类 $(btn).find("i").removeClass("fa-arrow-up");
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多