Javascript 如何在ASP.NET MVC中通过从数据库检索数据来选中/取消选中复选框列表
我对ASP.NETMVC非常陌生,正在尝试制作一个项目跟踪工具。 我想在页面加载并正常工作时显示表中的问题列表 但是,当用户单击“选择类别名称”时,他应该会得到如上所述的所有问题,并在与特定类别相关的问题上打勾。到目前为止,我正在筛选并仅获得正确的筛选问题,但列表中应显示未选中的所有其他类别问题 我有一个问题表,类别和它们之间的一对多关系,因此我制作了一个名为QuestionCategoryMappingTable的映射表 我面临的问题是,我不知道如何先筛选所有问题,然后在用户从列表中选择时设置复选框。 我已经做了两个单独的功能都在工作,但我需要分开的功能一起 这是我的代码Javascript 如何在ASP.NET MVC中通过从数据库检索数据来选中/取消选中复选框列表,javascript,c#,html,asp.net-mvc,Javascript,C#,Html,Asp.net Mvc,我对ASP.NETMVC非常陌生,正在尝试制作一个项目跟踪工具。 我想在页面加载并正常工作时显示表中的问题列表 但是,当用户单击“选择类别名称”时,他应该会得到如上所述的所有问题,并在与特定类别相关的问题上打勾。到目前为止,我正在筛选并仅获得正确的筛选问题,但列表中应显示未选中的所有其他类别问题 我有一个问题表,类别和它们之间的一对多关系,因此我制作了一个名为QuestionCategoryMappingTable的映射表 我面临的问题是,我不知道如何先筛选所有问题,然后在用户从列表中选择时设置
// test code for partial view in project
QuestionDataAccessLayer questionDataAccessLayer = new QuestionDataAccessLayer();
//controller to add a partial view in create and edit question page
public new PartialViewResult PartialView()
{
IEnumerable<Questions> questions = questionDataAccessLayer.GetAllQuestion();
return PartialView("Partial_View", questions);
}
QuestionCategoryDataAccessLayer questionCategoryDataAccess = new QuestionCategoryDataAccessLayer();
public new PartialViewResult PartialView1(int id)
{
IEnumerable<QuestionCategory> questionCategory = questionCategoryDataAccess.GetQuestionsPerCategory(id);
return PartialView("Partial_View1", questionCategory);
}
JavaScript、HTML文件如下所示:
//更新局部视图的代码
window.onload=函数{
$.ajax{
url:“PartialView”,
数据:{},
键入:“Get”,
成功:功能反应{
$Questionpartial.htmlresponse
}
};
}
//根据所选章节更新问题的代码
$body.onchange,Qpartial,function{
var CatgId=$Qpartial.val;
$.ajax{
url:“PartialView1”,
数据:{id:CatgId},
键入:“Get”,
成功:功能反应{
$Questionpartial.htmlresponse
console.logCatgId;
}
}
};
@模型IEnumerable
@Html.DisplayNameFormodel=>model.Question
@模型中的每个var项
{
@*@Html.DisplayFormodelItem=>item.Question*@
@项目.问题
}
我不能评论,因为我缺乏声誉,所以假设中的一些自由将被接受,如果我做出错误的假设,我可以稍后编辑 据我所知,您希望向用户显示一个问题列表,并从下拉列表中选择与类别匹配的所有问题 如果可以从存储过程中更改返回类型,则可以使用一个sql函数返回问题以及是否应该检查该问题
CREATE procedure [dbo].[spGetAllMapping_Question_Category](@category_Id int)
as
Begin
SELECT
mpq.UID,mpq.Question_ID_FK_1,eq.Question ,mpq.Cat_ID_FK_2, ec.Description, mpq.Valid_From,
mpq.Valid_To,c.Chapter_Name,
CASE
WHEN mpq.Cat_ID_FK_2 = @category_Id THEN 1
ELSE 0
END as 'Checked'
FROM
EPQ2.Category ec,EPQ2.Questions eq, EPQ2.Mapping_Question_Category mpq, EPQ2.Chapter c
WHERE
mpq.Question_ID_FK_1 = eq.Question_ID_PK
and mpq.Cat_ID_FK_2 = ec.Cat_ID_PK
and c.Chapter_Id = eq.Chapter_Id
order by c.Ch_Sequence_ID , eq.Sequence_ID,ec.Cat_Name
End
可以在questionCategoryDataAccess中将位值设置为布尔值。我知道有些读者有一个GetBoolean函数,或者你可以使用一些三元运算符
然后可以使用此布尔值设置复选框
@foreach (var item in Model)
{
<tr>
<td>
@if (item.Checked == true)
{
<input name="AreChecked" type="checkbox" checked="checked" value="@item.Question" /> @item.Question<br />
}
else
{
<input name="AreChecked" type="checkbox" value="@item.Question" /> @item.Question<br />
}
</td>
</tr>
}
使用Html助手可能更容易,但我遵循了您的标准
希望这能有所帮助,如果我做出了一些错误的假设,请告诉我,我会尽力帮助找到正确的解决方案。当它们出现在屏幕上时,是全部被选中还是只是其中的一部分?@SimonPrice总共有12行,第一张图片显示全部12行,第二张只显示与所选类别相关的内容,哪一个是4,输出是正确的,但我想显示所有的12个问题,其中4个被选中,其他的应该只有一个复选框。因此,根据你的问题,其中一些应该被选中Hanks@EarthBound,我就是这样做的,忘了发布答案,但是的,它起了作用,谢谢你收到了