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。もしそうなら、私は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 に答える