如何解决在 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 举报,一经查实,本站将立刻删除。