ASP.NET MVC DropDownList选择更改的事件

时间:2017-06-19 02:57:53

标签: c# html asp.net asp.net-mvc asp.net-mvc-4

当我从数据库生成的下拉列表中选择TranCode时,如何自动将指定的TabNo设置为活动状态并在标签中显示Type?

我正在使用bootstap而我没有使用实体框架,如果你想查看所有代码,请发表评论,谢谢。

表:

TranCode-----TabNo-----Type
100100-------1---------Cash
100101-------1---------Card
100102-------2---------Card
100103-------3---------Cash
100104-------1---------Cash
100105-------3---------Card
100106-------3---------Cash

Index.chtml

<select class="form-control">
@foreach (System.Data.DataRow dr in Model.Transactions.Rows)
{
    <option>@dr["TranCode"].ToString()</option>
}
</select>

<label id="lblType" for="lblTypeValue">Type: </label>
<label id="lblTypeValue">N/A</label>

<div class="panel-heading">
    <ul class="nav nav-tabs">
        <li class="active"><a href="#tab1default" data-toggle="tab">Tab 1</a></li>
        <li><a href="#tab2default" data-toggle="tab">Tab 2</a></li>
        <li><a href="#tab3default" data-toggle="tab">Tab 3</a></li>
    </ul>
</div>

2 个答案:

答案 0 :(得分:1)

添加id,选项值和onchange事件。

<select class="form-control" onchange="select_onchange(this);" id="selTab">
    @foreach (System.Data.DataRow dr in Model.Data.Rows)
    {
        <option value="@dr["TabNo"].ToString()$@dr["Type"].ToString()">@dr["TranCode"].ToString()</option>
    }
</select>


<div class="panel-heading">
    <ul class="nav nav-tabs" id="myTabs">
        <li><a href="#tab1default" data-toggle="tab">Tab 1</a></li>
        <li><a href="#tab2default" data-toggle="tab">Tab 2</a></li>
        <li><a href="#tab3default" data-toggle="tab">Tab 3</a></li>
    </ul>
</div>

在剧本中

<script type="text/javascript">


        $(function () {
            var val = $("#selTab").val().split("$");
            setTab(val[0]);
            $("#lblTypeValue").text(val[1]);
        });

        function setTab(value) {
            $('#myTabs a[href="#tab' + value + 'default"]').tab('show');
        }

        function select_onchange(sel) {
            var val = sel.value.split("$");
            setTab(val[0]);
            $("#lblTypeValue").text(val[1]);
        }

    </script>

我希望它对你有用。

答案 1 :(得分:0)

你可以做回发或使用javascript来处理这个问题。

使用JS:

为您的交易使用视图模型,并在您的视图模型中使用它。

public class TransactionViewModel
{
    public string TranCode { get; set; }
    public int TabNo { get; set; }
    public string Type { get; set; }
}

将您的选择控件更改为此。

<select id="myTransaction" class="form-control">
@foreach (var transaction in Model.Transactions)
{
    <option value="@transaction.TranCode">@transaction.TranCode</option>
}
</select>

或使用Html.DropDownList

@Html.DropDownList("myTransaction", new SelectList(Model.Transactions, "TranCode", "TranCode"), new { @class="form-control" })

使用javascript(jquery)来处理事件和操纵视图。

<script type="text/javascript">
    $(document).ready(function(){

        var _transactions = JSON.parse('@Html.Raw(Json.Encode(Model.Transactions.Rows))');

        $('#myTransaction').change(function(){
            var _tranCode = $(this).value;
            var _transaction = arraySelect(_transactions, "TranCode", _tranCode);

            if(_transaction) {              
                $("#lblType").attr("tabindex", _transaction.TabNo); // Assigns the tab index of the control
                $("#lblTypeValue").attr("tabindex", _transaction.TabNo);    
                $("#lblTypeValue").val(_transaction.Type); // Sets the type
            }
        }); 
    });

    function arraySelect(data, propertyName, expectedValue) {
        for (var i = 0; i < data.length; i++) {
            if (data[i][propertyName] === expectedValue)
                return data[i];
        }
        return null;
    }
</script>