对于想了解ReactJs在项目列表中搜索的读者,本文将是一篇不可错过的文章,我们将详细介绍react搜索怎么做,并且为您提供关于Angular4–ReactiveForms–从列表中未引用的对象中选择
对于想了解ReactJs 在项目列表中搜索的读者,本文将是一篇不可错过的文章,我们将详细介绍react搜索怎么做,并且为您提供关于Angular 4 – Reactive Forms – 从列表中未引用的对象中选择列表中的项目 – trackby问题?、asp.net – 具有一个无效的SelectedValue,因为它在项目列表中不存在.你怎么调试?、asp.net – 错误:SelectedValue无效,因为它在项目列表中不存在、c# – ASP.NET MVC – 显示每个项目列表的项目列表的有价值信息。
本文目录一览:- ReactJs 在项目列表中搜索(react搜索怎么做)
- Angular 4 – Reactive Forms – 从列表中未引用的对象中选择列表中的项目 – trackby问题?
- asp.net – 具有一个无效的SelectedValue,因为它在项目列表中不存在.你怎么调试?
- asp.net – 错误:SelectedValue无效,因为它在项目列表中不存在
- c# – ASP.NET MVC – 显示每个项目列表的项目列表
ReactJs 在项目列表中搜索(react搜索怎么做)
谢谢大家,我已经解决了这个问题。上次更新代码后,只需在列表组件中添加搜索组件,如下代码。
return (
<List component="nav"
aria-labelledby="nested-list-subheader"
subheader={
<ListSubheader component="div" id="nested-list-subheader">
</ListSubheader>
}>
<SearchBar items={items}/>
</List>
);
Angular 4 – Reactive Forms – 从列表中未引用的对象中选择列表中的项目 – trackby问题?
Angular 1.6中的代码是:
<select ng-model="$ctrl.level" ng-options="item as item.label for item in $ctrl.referentiel.levels | orderBy : 'index' track by item.id" id="childLevel" name="childLevel"> <option value="">Select</option> </select>
我的列表中未引用对象级别,因为使用对象referentiel.levels加载此列表.但是我的列表元素和我的对象级别之间的匹配完全归功于trackby.因此,当加载我的对象级别时,将在列表中选择该元素.
现在,我尝试使用Reactive Forms转换此代码.
在我的HTML代码中,我有:
<select formControlName="levelControl" id="levelSelect" name="levelSelect"> <option [ngValue]="null">Select</option> <option *ngFor="let level of referentiel.levels;trackBy:identify" [ngValue]="level">{{level.label }}</option> </select>
在我的组件中,我有OnInit方法:
(<FormControl>this.myForm.controls.levelControl).setValue(this.level);
方法识别很简单:
identify(index,item){ return item.id; }
但是这种竞争是不同的.当我使用对象级别设置控件的值时,未选中列表中具有相同ID的项目.
我找到了解决方案,但我不明白为什么它不起作用.
我的解决方法是用HTML编写此代码:
<option *ngFor="let level of referentiel.levels;trackBy:identify" [ngValue]="level.id">{{level.label }}</option>
在我的打字稿文件中:
(<FormControl>this.myForm.controls.levelControl).setValue(this.level.id);
所以,现在它正在工作:我的项目在列表中被选中.
在这种情况下,我不明白两个版本的Angular之间的区别.
也许我错过了什么……
谢谢你的帮助.
为什么它与level.id一起使用是因为这是一个字符串(数字?)而level是一个没有引用数组的对象,因此无法从列表中识别它.
由于您使用的是Angular 4,我们现在有了一个新的指令[compareWith],我们可以在这里比较您级别的某些属性,例如id.将它与数组进行比较并找到匹配项.所以你可以做的是以下几点:
<select formControlName="levelControl" [compareWith]="compare" id="levelSelect" name="levelSelect"> <option value="">Select</option> <option *ngFor="let level of referentiel.levels" [ngValue]="level"> {{level.label }} </option> </select>
零件:
compare(val1,val2) { return val1.id === val2.id; }
还要注意我改变了
<option [ngValue]="null">Select</option>
至
<option value="">Select</option>
因此Angular不会尝试与空值进行比较.这会引发错误.
asp.net – 具有一个无效的SelectedValue,因为它在项目列表中不存在.你怎么调试?
<asp:DropDownList ID="dd1" runat="server" DataSourceID="ADataSource" DataTextField="Name" DataValueField="Name" SelectedValue='<%# Bind("Name") %>' Width="255" AppendDataBoundItems="true" TabIndex="3" Font-Size="small" EnableViewState="true" > <asp:ListItem Text="Select" Value="" /> </asp:DropDownList>
以下是错误
System.ArgumentOutOfRangeException was unhandled by user code
Message=’dd1′ has a SelectedValue which is invalid because it does not exist in the list of items.
Parameter name: value
Source=System.Web
ParamName=value
StackTrace:
at System.Web.UI.WebControls.ListControl.PerformDataBinding(IEnumerable
dataSource)
at System.Web.UI.WebControls.ListControl.OnDataBinding(EventArgs e)
at System.Web.UI.WebControls.ListControl.PerformSelect()
at System.Web.UI.WebControls.BaseDataBoundControl.DataBind()
at System.Web.UI.Control.DataBindChildren()
at System.Web.UI.Control.DataBind(Boolean raiSEOnDataBinding)
at System.Web.UI.Control.DataBind()
at System.Web.UI.Control.DataBindChildren()
at System.Web.UI.Control.DataBind(Boolean raiSEOnDataBinding)
at System.Web.UI.Control.DataBind()
at System.Web.UI.Control.DataBindChildren()
at System.Web.UI.Control.DataBind(Boolean raiSEOnDataBinding)
at System.Web.UI.Control.DataBind()
at System.Web.UI.Control.DataBindChildren()
at System.Web.UI.Control.DataBind(Boolean raiSEOnDataBinding)
at System.Web.UI.WebControls.DetailsView.CreateChildControls(IEnumerable
dataSource,Boolean dataBinding)
at System.Web.UI.WebControls.CompositeDataBoundControl.PerformDataBinding(IEnumerable
data)
at System.Web.UI.WebControls.DetailsView.PerformDataBinding(IEnumerable
data)
at System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback(IEnumerable
data)
at System.Web.UI.DataSourceView.Select(DataSourceSelectArguments
arguments,DataSourceViewSelectCallback callback)
at System.Web.UI.WebControls.DataBoundControl.PerformSelect()
at System.Web.UI.WebControls.BaseDataBoundControl.DataBind()
at System.Web.UI.WebControls.DetailsView.DataBind()
at storeUpdate.GvStoresSelect_SelectedindexChanged(Object sender,EventArgs e) in line 233
at System.EventHandler.Invoke(Object sender,EventArgs e)
at System.Web.UI.WebControls.GridView.OnSelectedindexChanged(EventArgs e)
at System.Web.UI.WebControls.GridView.HandleSelect(Int32 rowIndex)
at System.Web.UI.WebControls.GridView.HandleEvent(EventArgs e,Boolean causesValidation,String validationGroup)
at System.Web.UI.WebControls.GridView.OnBubbleEvent(Object source,EventArgs e)
at System.Web.UI.Control.RaiseBubbleEvent(Object source,EventArgs args)
at System.Web.UI.WebControls.GridViewRow.OnBubbleEvent(Object source,
EventArgs e)
at System.Web.UI.Control.RaiseBubbleEvent(Object source,EventArgs args)
at System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e)
at System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String
eventArgument)
at System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String
eventArgument)
at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler
sourceControl,String eventArgument)
at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterasyncPoint)
InnerException:
解决方法
> DropDownList没有项目,因为评估发生在列表绑定之前>列表已绑定但缺少此特定值>返回的值可以为null
asp.net – 错误:SelectedValue无效,因为它在项目列表中不存在
objstateList具有这些值(来自存储的proc加载它 – ID#6是一个空字符串”):
StateId State ----------- ----- 6 4 AL 1 GA 3 KY 2 TN
objStudentDetails具有这些值(来自加载它的存储过程):
FirstName LastName State ----------- ---------- ----- tone smith TN
或者它可以有这个结果集(State是一个空字符串 – ”):
FirstName LastName State ----------- ---------- ----- jenny johnson
在第一个objStudentDetails结果集中,EditItemTemplate中的状态DropDownList显示正常.但是,在第二个结果集中,我收到此错误:
'ddlEditState' has a SelectedValue which is invalid because it does not exist in the list of items. Parameter name: value
我认为,因为我的查找表有一个空字符串的值,objStudentDetails值与状态的空字符串匹配,但有些东西不能按照我期望的方式工作.
这是Gridview的EditItemTemplate代码:
<EditItemTemplate> <asp:Panel ID="panEditState" runat="server"> <asp:DropDownList ID="ddlEditState" runat="server" CssDataSourceID="objstateList" DataTextField="State" DataValueField="State" SelectedValue='<%# Bind("State") %>' Width="50px"> </asp:DropDownList> </asp:Panel> </EditItemTemplate>
和objstateList,它调用一个方法传递查询表的查询参数:
<asp:ObjectDataSource ID="objstateList" runat="server" SelectMethod="GetDropdownData" TypeName="aimLibrary.BLL.DropdownData"> <SelectParameters> <asp:Parameter Name="itemsToGet" DefaultValue="state" /> </SelectParameters> </asp:ObjectDataSource>
有任何想法吗?
解决方法
<asp:DropDownList ID="Categories" runat="server" DataSourceID="CategoriesDataSource" DataTextField="CategoryName" DataValueField="CategoryID" SelectedValue='<%# Bind("CategoryID") %>' AppendDataBoundItems="True"> <asp:ListItem Value="">[nothing selected]</asp:ListItem> </asp:DropDownList>
c# – ASP.NET MVC – 显示每个项目列表的项目列表
我有3个视图对象:学校,课程和课程.每所学校都有多门课程,每门课程可以有多个课程(将课程视为学习课程,课程为实际课程).在我的主视图中,我显示所有学校,然后单击一个以进入它.在“CourseView”页面上,它显示学校的名称以及与该学校相关的所有课程.我正在尝试做的,也是所有列出的每门课程相关的课程.这可能吗(没有大量的jQuery / JSON魔法,我还在学习)?
public class School { public int Id { get; set; } public string SchoolName { get; set; } public string WelcomeMsg { get; set; } public string Schoollogo { get; set; } public List<Course> Courses { get; set; } } public class Course { public int Id { get; set; } public string CourseCode { get; set; } public string CourseName { get; set; } public int SchoolId { get; set; } public List<Class> Classes { get; set; } } public class Class { public int Id { get; set; } public string ClassNumer { get; set; } public int CourseId { get; set; } public int InstructorId { get; set; } }
在我的SchoolDAO.cs中,我有以下内容:
{ cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@SchoolId",SchoolId); using (sqlDataReader dr = cmd.ExecuteReader()) { if (dr.Read()) { // fill school object in another method. school = readRecord(dr); } } // Get all courses available for this school. school.Courses = CoursesDAO.GetCourses(SchoolId); return school; }
这也调用了CourseDAO.cs中的一个方法来获得该学校的课程:
{ sqlCommand cmd = new sqlCommand("Courses.GetCourses",conn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@SchoolId",SchoolId); using (sqlDataReader dr = cmd.ExecuteReader()) { while (dr.Read()) { courses.Add(readRecord(dr)); } } // Get all classes available for each course. foreach (var course in courses) { course.Classes = ClassDAO.GetClasses(course.Id); } return courses; }
然后调用ClassDAO方法获取每个课程的所有类:
{ sqlCommand cmd = new sqlCommand("Courses.GetCourses",courseId); using (sqlDataReader dr = cmd.ExecuteReader()) { while (dr.Read()) { classes.Add(readRecord(dr)); } } return classes; }
最后,我的问题是:如何在模型中显示视图中的学校,课程和班级列表?
我的视图有以下内容,显示我正在查看的学校以及该学校的课程列表:
<divhttps://www.jb51.cc/tag/dis/" target="_blank">display-field"> <h1><%: Model.SchoolName %></h1> <h3><%: Model.WelcomeTitle %></h3> <blockquote> <i><%: Model.WelcomeText %></i></blockquote> </div> <!-- Courses --> <divhttps://www.jb51.cc/tag/dis/" target="_blank">display-field"> <table id="courses"> <thead> <th>Course Code</th> <th>Course Name</th> </thead> <tbody> <% foreach (var item in Model.Courses) { %> <tr> <td><%: Html.displayFor(model => item.CourseCode) %></td> <td><%: Html.displayFor(model => item.CourseName) %></td> </tr> <% } %></tbody> </table> </div>
在那个表之后,我想把另一个表id =“classes”,但遗憾的是当我尝试这样做时:
<% foreach (var class in Model.Courses) { %> <tr> <td><%: Html.displayFor(model => item.ClassNumber) %></td> </tr> <% } %>
它不起作用 – 我假设因为我要么不知道如何访问属于列表的列表,要么因为这不是模型的工作方式.
对此的任何见解都将受到极大的赞赏.谢谢!
PS – 信息从DAO传递 – >业务 – >控制器通过简单的方法,例如:
SchoolController:
public ActionResult ViewSchool(int Id) { School school = SchoolBusiness.GetSchool(Id); return View(school); }
SchoolBusiness.GetSchool:
public static School GetSchool(int Id) { School school = SchoolDAO.GetSchool(Id); return school; }
解决方法
我将HTML更改为简单列表,因为我认为它更容易理解.如果这是您想要的,那么更改为嵌套表应该很简单.
<!-- Courses --> <ul> <% foreach (var course in Model.Courses) { %> <li> <%: Html.displayFor(model => course.CourseCode) %> <%: Html.displayFor(model => course.CourseName) %> <!-- Classes --> <ul> <% foreach (var class in course.Classes) { %> <li><%: Html.displayFor(model => class.ClassNumber) %></li> <% } %> </ul> </li> <% } %> </ul>
今天关于ReactJs 在项目列表中搜索和react搜索怎么做的分享就到这里,希望大家有所收获,若想了解更多关于Angular 4 – Reactive Forms – 从列表中未引用的对象中选择列表中的项目 – trackby问题?、asp.net – 具有一个无效的SelectedValue,因为它在项目列表中不存在.你怎么调试?、asp.net – 错误:SelectedValue无效,因为它在项目列表中不存在、c# – ASP.NET MVC – 显示每个项目列表的项目列表等相关知识,可以在本站进行查询。
本文标签: