簡體   English   中英

在C#中使用實體框架在datagridview中顯示數據庫中的數據

[英]display data from database in datagridview with entity framework in c#

我使用Empty Web Application作為主機,並且具有不同的類,例如其中的用戶。

我也有一個客戶端(Windows Forms應用程序)。 請注意,這是實體框架數據庫!

好的,這就是事情。 我想在datagridview中顯示每個數據(ID,名稱等的單獨列...)

在我的Empty Web應用程序中,我具有Webservice,其中包含用於顯示用戶的代碼。

這是代碼

[WebMethod]
    public List<string> getUsers()
    {
        List<string> userList = new List<string>();
        using (var db = new Database())
        {
            var query = from x in db.userList
                            orderby x.UserID
                            select x;

            foreach (var user in query)
            {
                userList.Add(user.userID + user.Name); //also some other information, but doesnt really matter here
            }
        }
        return userList;
    }

好的,轉到Windows Forms App(客戶端)。

現在,我需要在datagridview中顯示此數據(在單獨的列中),這意味着:

在ID列中顯示userID在名稱列中顯示名稱

這是發生問題的地方。 所有數據都顯示在每一列中。 USERID +名稱欄顯示在ID列中

我的密碼

ServiceReference1.mojWebServiceSoapClient client = new ServiceReference1.mojWebServiceSoapClient();

        var userL = client.pridobiUporabnike();

        foreach (string user in userL)
        {
            string[] row = new string[6];
            row[0] = user;
            row[1] = user;
            row[2] = user;
            row[3] = user;
            row[4] = user;
            row[5] = user;               
            dataGridView1.Rows.Add(row);
        }

您會說“當然,當您到處都有“用戶”時,它會顯示相同的數據。我知道...我嘗試了很多事情,但是以某種方式我無法使其正常工作。

我認為代碼應類似於row [0] = user.UserID; 1行= user.Name;

你們能幫我解決這個問題嗎,我會很感激

非常感謝提供輸入的任何人。

我還包括了運行程序的結果。

在此處輸入圖片說明

您將返回一個列表,每個用戶只能包含一個值,在這種情況下,您正在為該屬性分配id和name字段。

您應該包含一個單獨的類,該類將根據您的要求填充值,然后返回該類的列表或集合。

[DataContract]
public class Userdata
{
    public Userdata(int id, string name, string surname, string number, string mobile, string email)
    {
        this.Id = id;
        this.Name = name;
        this.Surname = surname;
        this.Number = number;
        this.Mobile = mobile;
        this.Email = email;
    }

    [DataMember]
    public int Id { get; set; }

    [DataMember]
    public string Name { get; set; } 

    [DataMember]      
    public string Surname { get; set; }

    [DataMember]
    public string Number { get; set; }

    [DataMember]
    public string Mobile{ get; set; } 

    [DataMember]      
    public string Email{ get; set; }
}

public List<Userdata> getUsers()
    {
        var userList = new List<Userdata>();
        using (var db = new Database())
        {
            var query = from x in db.userList
                        orderby x.UserID
                        select x;

            foreach (var user in query)
            {
                userList.Add(new Userdata(user.id, user.name, user.surname, user.number, user.mobile, user.email));
            }
        }
        return userList;
    }

我認為這個小例子可以使您朝正確的方向前進。

我看到您正在使用Web服務,然后應該使用一些屬性裝飾dto(數據傳輸對象)類。 請參閱UserData類上的屬性。

最后,對於您的客戶端代碼,盡管有很多方法可以設置數據網格,但我會堅持使用您目前擁有的方法。 更改后,您應該能夠如下設置網格。

var userL = client.pridobiUporabnike();

    foreach (string user in userL)
    {
        string[] row = new string[2];
        row[0] = user.Id;
        row[1] = user.Name;              
        dataGridView1.Rows.Add(row);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM