微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 ASP.NET MVC 中更新 webgrid 时出现问题下拉列表

如何解决在 ASP.NET MVC 中更新 webgrid 时出现问题下拉列表

我从使用 MysqL 数据库数据库表和使用 ASP.NET MVC 的视图模型获得的值填充了两个 DropDownList's

填充下拉列表后,我需要使用单个 WebGrid 上选择的值过滤 DropDownList

如果选择的值是第一个 DropDownList 更新 WebGrid 工作正常。

我的问题是第二个 DropDownList 没有更新 WebGrid

但是如果编辑View from的这部分

@{ ViewBag.Title = "test"; 
   WebGrid webGrid = new WebGrid(source: Model.ComUO,canPage: true,canSort: false,rowsPerPage: 10); 
 }

@{ ViewBag.Title = "test"; 
   WebGrid webGrid = new WebGrid(source: Model.TktUO,rowsPerPage: 10); 
 }

第二个 DropDownList 更新 WebGrid 工作正常,但不工作第一个 WebGrid 的更新 DropDownList

在第二个 DropDownList 上选择值时如何禁用第一个 DropDownList,反之亦然?

如何解决这个问题?

我的代码如下

查看:

@model InsGE.Models.PersonModel 

@{ ViewBag.Title = "test"; 
   WebGrid webGrid = new WebGrid(source: Model.ComUO,rowsPerPage: 10); 
 }

@using (Html.BeginForm("RecoveryAll","Home",FormMethod.Post,new { @Id = "WebGridForm" }))
{
    <div class="row">
        <div class="col-md-3">
            <div class="form-group">
                @Html.DropDownList("Com",Model.ComUO_List,"Com",new { @id = "ddlcom" })
            </div>
        </div>
        <div class="col-md-3">
            <div class="form-group">
                @Html.DropDownList("Tkt",Model.TktUO_List,"Tkt",new { @id = "ddltkt" })
            </div>
        </div>
    </div>
}

@webGrid.GetHtml(
    htmlAttributes: new { @id = "WebGrid",@class = "Grid" },columns: webGrid.Columns(
             webGrid.Column("CustomerID","Customer Id")))

    <script type="text/javascript" src="~/Scripts/jquery.min.js"></script>
    <script type="text/javascript">
        $("body").on("change","#ddlcom,#ddltkt",function () {
            $('#WebGridForm')[0].submit();
        });

        $("body").on("click",".Grid tfoot a",function () {
            $('#WebGridForm').attr('action',$(this).attr('href')).submit();
            return false;
        });
    </script>

控制器:

   // GET: Home
    public ActionResult RecoveryAll()
    {
        PersonModel model = PopulateModel(null,null);
        return View(model);
    }

    [HttpPost]
    public ActionResult RecoveryAll(string com,string tkt)
    {
        PersonModel model = PopulateModel(com,tkt);
        return View(model);
    }

    private static PersonModel PopulateModel(string com,string tkt)
    {
        PersonModel model = new PersonModel()
        {
            ComUO = GetData(com),ComUO_List = GetData("").Select(c => new SelectListItem { Text = c.Com,Value = c.Com }).distinct().ToList(),TktUO = GetData2(tkt),TktUO_List = GetData2("").Select(c => new SelectListItem { Text = c.Tkt,Value = c.Tkt }).distinct().ToList()
        };

        return model;
    }

    private static List<Customer> GetData2(string tkt)
    {
        List<Customer> customers = new List<Customer>();

        string conString = ConfigurationManager.ConnectionStrings["cn"].ConnectionString;

        string sql = @String.Format(" SELECT * FROM `dotbl` WHERE Tkt = @Tkt OR @Tkt IS NULL; ");

        using (MysqLConnection con = new MysqLConnection(conString))
        {
            MysqLCommand cmd = new MysqLCommand(sql);

            if (!string.IsNullOrEmpty(tkt))
            {
                cmd.Parameters.AddWithValue("@Tkt",tkt);
            }
            else
            {
                cmd.Parameters.AddWithValue("@Tkt",(object)dbnull.Value);
            }

            cmd.Connection = con;
            con.open();

            MysqLDataReader sdr = cmd.ExecuteReader();

            while (sdr.Read())
            {
                customers.Add(new Customer
                {
                    CustomerID = sdr["CustomerID"].ToString(),});
            }
            con.Close();
        }

        return customers;
    }

    private static List<Customer> GetData(string com)
    {
        List<Customer> customers = new List<Customer>();

        string conString = ConfigurationManager.ConnectionStrings["cn"].ConnectionString;

        string sql = @String.Format(" SELECT * FROM `dotbl` WHERE Com = @Com OR @Com IS NULL; ");

        using (MysqLConnection con = new MysqLConnection(conString))
        {
            MysqLCommand cmd = new MysqLCommand(sql);

            if (!string.IsNullOrEmpty(com))
            {
                cmd.Parameters.AddWithValue("@Com",com);
            }
            else
            {
                cmd.Parameters.AddWithValue("@Com",});
            }
            con.Close();
        }

        return customers;
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。