如何在asp.net MVC Razor中的WebGrid中级联下拉

时间:2016-01-07 08:52:39

标签: jquery asp.net-mvc razor

我在webgrid中遇到级联下拉列表的问题。 这是场景。 我有两个下拉列表,一个用于表名,一个用于列名。我的级联必须以这样一种方式工作,即选择后表后,与该表相关的列应仅反映在下一个下拉列表中。然后我根据一些primaryKey选择一个tableName,外键关系应该从一个方法中选择列,该方法在一个方法中创建一个实体数据模型的对象,该方法返回一个包含列名的Json对象 我打算在我的视图中使用JQuery,但由于我是编码的新手,我被困在Frown | :( ...有人可以就我的代码出了什么问题提出建议。

我的观点如下

<div id="grid">
    @wg.GetHtml(
    tableStyle: "gridTable",
    headerStyle: "gridHead",
            rowStyle: "gridRow",
    footerStyle: "gridFooter",
            alternatingRowStyle: "gridAltRow",
    columns: wg.Columns(
                         wg.Column("DestnColumn", "Destination Column"),
                                 wg.Column(header: "SourceTable", format: @item => Html.DropDownList("value", (IEnumerable<SelectListItem>)Model.SourceColumnModel[0].SourceTables)),
                                 wg.Column(header: "ColumnNames",format: @item => Html.DropDownList("value",new SelectList(string.Empty,"input_field_id","input_field_name"),"Select Column")),        // wg.Column(header: "SourceColumn", format: @item1 =>     Html.DropDownList("value1",      (IEnumerable<SelectListItem>)Model.SourceColumnModel[0].SourceColumnsNames)),
                                         wg.Column("DataSize", "Size"),
                                 wg.Column("DataType", "Data Type"))

)
    )
</div>

<script type="text/javascript">
function SelectInput(inputtype) {
    var filenamediv = document.getElementById('FileNames');
    var databasenamediv = document.getElementById('DatabaseNames');

    if (inputtype == 1) {
        databasenamediv.style.display = 'none';
        filenamediv.style.display = 'inline';
        $()
        @*@Html.Partial("_FileView")*@
    }
    else if (inputtype == 2) {
        databasenamediv.style.display = 'inline';
        filenamediv.style.display = 'none';
    }
}

我的控制器如下:

    public JsonResult GetColumn(string TableName)
{
List<string> ColName = new List<string>();
 int id = (from m in db.inputs where m.input_name == TableName select m).Max(p => p.input_id);
input_field Ifield = new input_field();
var str = (from m in db.input_field where m.input_id == id select new { m.input_field_name, m.input_field_id }).ToList();


return Json(new SelectList(str, "input_field_id", "input_field_name"));
}

0 个答案:

没有答案