2017-06-01 75 views
0

我有這個類C#選擇數據源第一個項目生成的列表

class UserData 
{ 
    public UserData() { } 

    public string Name { get; set; } 
    public string Val { get; set; } 
} 

我有一個正常的列表框。我從MySql中選擇數據。

private void ListUsers(string server) 
{ 

    List<UserData> ls = new List<UserData>(); 

    foreach(dynamic obj in _data) 
    { 
     if(obj.servername == server) 
     { 
      ls.Add(new UserData() { Name = obj.username, Val = obj.password }); 
     } 
    } 
    UserList.Sorted = true; 
    UserList.DisplayMember = "Name"; 
    UserList.ValueMember = "Val"; 
    UserList.DataSource = ls; 
} 

在調試ls它包含

[0] 
    Name => "Test", 
    Val => "12345" 
[1] 
    Name => "Test2", 
    Val => "54321" 

現在有時會出現在該列表中只北京時間1個postition。如果發生這種情況,我想選擇該條目或至少Name並將其粘貼到文本框中。

但由於某種原因,我不能實現這一點。谷歌沒有帶來任何結果。至少不是那套房給我的問題。

我試圖

rdpUserList.Items[0].ToString(); 

但這使我ProjectName.UserData,而不是Test

什麼是正確的方式來選擇由數據源生成的列表中的第一個項目?

+0

非常感謝。如果您留下Answere生病+投票並接受它!我不是C#的主人,仍然在嘮叨。所以thx非常多 – Dwza

回答

2

您對類型爲ProjectName.UserData的實例調用ToString(),該實例爲您提供其類型名稱。

您想改爲訪問該實例的Name屬性。

如果rdpUserListList<UserData>,你想這樣:

rdpUserList.Items[0].Name 

相反,如果它的數據源,你需要轉換,以項目來訪問它的屬性:

((ProjectName.UserData)rdpUserList.Items[0]).Name 
+0

從來沒有處理過數據源。所以這真的幫了我。我之前嘗試訪問'Name'屬性的cource,但是由於該屬性未知,導致出現錯誤。投它幫助。 THX – Dwza

1

有兩種解決這個問題。第一個是邏輯問題;您需要調用Name屬性,而不是ToString()方法。請注意,使用這種方式,您需要投射到您的對象類型。

((UserData)rdpUserList.Items[0]).Name

第二個選項是覆蓋ToString()方法,所以你可以叫名字,你嘗試過的方式。

class UserData 
{ 
    public UserData() { } 

    public string Name { get; set; } 
    public string Val { get; set; } 
    public override string ToString() 
    { return this.Name; } 
} 

,然後調用與 rdpUserList.Items[0].ToString()

+0

我叫ToString(),因爲它是它顯示的唯一的東西,我看到它是錯誤的:) – Dwza

+0

這是因爲你沒有在你的類中覆蓋它。 'ToString()'當對象類型沒有被覆蓋時以字符串形式返回對象類型。 – CDove

+0

我會用CodeCasters回答問題,但是你從這裏得到+1來顯示更多選項。也謝謝你。 – Dwza

0

對不起,我以前的帖子,我沒有測試之前,我回答,

試試下面的,如果你想,我只是喜歡LINQ :)

var item = rdpUserList.Items.OfType<ListItem>().First(); 
Class1 t = new Class1(){Id=Convert.ToInt32(item.Value), description = item.Text}; 

或只是因爲名字

string name = rdpUserList.Items.OfType<ListItem>().First().Text; 
相關問題