我在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"));
}