GVKun编程网logo

ReactJs 在项目列表中搜索(react搜索怎么做)

14

对于想了解ReactJs在项目列表中搜索的读者,本文将是一篇不可错过的文章,我们将详细介绍react搜索怎么做,并且为您提供关于Angular4–ReactiveForms–从列表中未引用的对象中选择

对于想了解ReactJs 在项目列表中搜索的读者,本文将是一篇不可错过的文章,我们将详细介绍react搜索怎么做,并且为您提供关于Angular 4 – Reactive Forms – 从列表中未引用的对象中选择列表中的项目 – trackby问题?、asp.net – 具有一个无效的SelectedValue,因为它在项目列表中不存在.你怎么调试?、asp.net – 错误:SelectedValue无效,因为它在项目列表中不存在、c# – ASP.NET MVC – 显示每个项目列表的项目列表的有价值信息。

本文目录一览:

ReactJs 在项目列表中搜索(react搜索怎么做)

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 4 – Reactive Forms – 从列表中未引用的对象中选择列表中的项目 – trackby问题?

我正在将Angular 1.6代码转换为Angular 4,我遇到了一个元素列表问题.
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之间的区别.
也许我错过了什么……

谢谢你的帮助.

我不认为你需要trackBy,除非你想使用它.但它与您的默认选项无效的原因无关.

为什么它与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.net – 具有一个无效的SelectedValue,因为它在项目列表中不存在.你怎么调试?

我遇到asp.net绑定到下拉列表的问题,我不知道如何调试.我在堆栈上查看了有关此问题的其他问题,但没有任何帮助.据我所知,它应该选择的“名称”在列表中.
<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:

解决方法

来自<%#Bind(“Name”)%>的值传递给SelectedValue属性,与其集合中的项不匹配.最可能的原因:

> DropDownList没有项目,因为评估发生在列表绑定之前>列表已绑定但缺少此特定值>返回的值可以为null

asp.net – 错误:SelectedValue无效,因为它在项目列表中不存在

asp.net – 错误:SelectedValue无效,因为它在项目列表中不存在

我有一个Gridview绑定到ObjectDataSource(objStudentDetails).在Gridview的编辑/插入模式中,其中一个字段是DropDownList,它从查找表中获取它的选择列表选项.我将此DropDownList绑定到另一个表示查找表的ObjectDataSource控件(objstateList).只要objStudentDetails ObjectDataSource中的值与objstateList ObjectDataSource中的某个值匹配,它就可以正常工作,至少在非空字符串值的情况下是这样.

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>

有任何想法吗?

解决方法

首先将DropDownLists的AppendDataBoundItems属性设置为true.接下来,通过添加以下< asp:ListItem>来添加NULL ListItem.每个DropDownList的元素,以便声明性标记看起来像:

<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 – 显示每个项目列表的项目列表

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;
    }

解决方法

在迭代它并获取类列表时,您需要引用每个课程.为此,请嵌套foreach语句.

我将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 – 显示每个项目列表的项目列表等相关知识,可以在本站进行查询。

本文标签: