0

我正在尝试检索People数据库表中的所有内容。该表由以下列组成:

ID, FirstName, LastNamre, Age, School

在下面的代码中,我只将表的前 2 个值保存在列表中。我想将表中的所有值保存到列表中。

我在下面突出显示了这部分代码;

i.Add(new SelectListItem
      {
          Value = sql.GetInt32(0).ToString(), 
          Text = sql.GetString(1)  
      });

完整代码;

public List<SelectListItem> getAllPeople()
{
   var i = new List<SelectListItem>();

   try
   {
       using (SqlCommand com = new SqlCommand("SELECT * FROM USERS", con))
       {
           con.Open();

           SqlDataReader sql = com.ExecuteReader();

           while (sql.Read())
           {
               i.Add(new SelectListItem
                         {
                            Value = sql.GetInt32(0).ToString(), 
                            Text = sql.GetString(1)  
                         });
           }
        }
    } 
   ...

更新

我的视图类,如何在视图中显示值?

@model MyPro.Models.MyPersonModel

....

@using (Html.BeginForm())
{
...


@foreach (var item in MyPro.Models.MyPersonModel)
{
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.?????)
        </td>
4

3 回答 3

1

试试这个:

i.Add(new SelectListItem
{
    Value = sql.GetInt32(0).ToString(), 
    Text = sql.GetString(1) + " " + sql.GetString(2) + " - " + sql.GetString(3) + " - " + sql.GetString(4)
});

更新

如果我要这样做,我会使用 ajax,以便在SelectListItem更改时,我将通过People. ID(这是SelectListItem的值)而不是获取数据库中所有的所有数据People。就像是:

$('#SelectListItemId').change(function(){
    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "People/GetDetails",
        data: '{ id: this.val() }',
        success: function (msg) {
            alert(msg.d);
        }
    });
});

在您的问题中添加视图后更新

由于当我发布我的答案时您没有发表您的观点并且您没有包括您的MyPersonModel,我会假设这是您的MyPersonModel

public class MyPersonModel
{
     public int ID { get;set; }
     public string FirstName { get;set; }
     public string LastNamre { get;set; }
     public int Age { get;set; }
     public string School { get;set; }
}

那么我相信你的观点应该是IEnumerable<MyPro.Models.MyPersonModel>

@model IEnumerable<MyPro.Models.MyPersonModel>

....

@using (Html.BeginForm())
{
...


@foreach (var item in Model)
{
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.FirstName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.LastNamre)
        </td>
...

并且您的检索代码应该是这样的:

public List<MyPersonModel> getAllPeople()
{
   var people = new List<MyPersonModel>();

   try
   {
       using (SqlCommand com = new SqlCommand("SELECT * FROM USERS", con))
       {
           con.Open();

           SqlDataReader sql = com.ExecuteReader();

           while (sql.Read())
           {
               people.Add(new MyPersonModel
                          {
                              ID = sql.GetInt32(0), 
                              FirstName = sql.GetString(1),
                              LastNamre = sql.GetString(2),
                              Age = sql.GetInt32(3) ,
                              School = sql.GetString(4)
                          });
           }
        }
    }
} 

至于 javascript,您的使用SelectListItem让我相信您想People在 Dropdownlist 中显示列表。我只是建议如果是这种情况并且我要这样做,我会使用 javascript 来获取其他详细信息。

于 2013-02-22T06:09:26.830 回答
1

添加类:

public class SomeClass
{
     public Int32 ID {get;set;
     public String FirstName {get;set;}
     public String LastNamre {get;set;}
     public Int32 Age {get;set;}
     public String School {get;set;}
}

并修改选择器:

           i.Add(new SomeClass
                     {
                        ID = sql.GetInt32(0).ToString(), 
                        FirstName = sql.GetString(1),
                        LastNamre = sql.GetString(2),
                        Age = sql.GetInt32(3),
                        School = sql.GetString(4)
                     });
于 2013-02-22T06:11:57.077 回答
1

您需要创建自己的Person类:

public class Person
{
     public int ID { get;set; }
     public string FirstName { get;set; }
     public string LastNamre { get;set; }
     public int Age { get;set; }
     public string School { get;set; }
}

然后SelectListItem在检索数据时使用它(而不是 ):

public List<Person> getAllPeople()
{
   var people = new List<People>();

   try
   {
       using (SqlCommand com = new SqlCommand("SELECT * FROM USERS", con))
       {
           con.Open();

           SqlDataReader sql = com.ExecuteReader();

           while (sql.Read())
           {
               people.Add(new Person
                          {
                              ID = sql.GetInt32(0), 
                              FirstName = sql.GetString(1),
                              LastName = sql.GetString(2),
                              Age = sql.GetInt32(3) ,
                              School = sql.GetString(4)
                          });
           }
        }
    } 
于 2013-02-22T06:12:15.880 回答