2013-02-04 110 views
1

我試圖找出如何讓我的方法隨機選擇從下拉列表中選擇帳戶類型。基本上在我的Web應用程序中,用戶將選擇:活動,不活動,潛在客戶或從下拉列表中暫停。我試圖做的是測試這個功能,並讓我的方法隨機選擇一個值,當我運行測試。選擇下拉列表在C#中的隨機字符串

我有一個很難引用該方法將字符串值中的代碼,如果這是有道理的。任何幫助將是偉大的,如果你需要更多的信息讓我知道!

這是我到目前爲止有:

public void RandomStatusTypes() 
    { 
     List<string> statusTypes = new List<string> { "ACTIVE", "INACTIVE", "PROSPECT", "SUSPENDED" }; 
     Random randStatus = new Random(); 
     int index = randStatus.Next(0, 6); 
     string value = statusTypes[index]; 
    } 

代碼將有一行說StatusTyp = _Status,,希望我能這樣,每次我運行它隨機選取一個值的程序分配一個隨機狀態的值。

謝謝!

+3

爲什麼你有_6_在_randStatus.Next(...) _?它不是_4_嗎? –

+0

@CédricBignon - 它一定是3,而不是4,總元素是4,列表有零基指數 –

+0

@CédricBignon,你是錯的,謝謝! – CSharpDev4Evr

回答

1

也許:

private static List<string> StatusTypes = new List<string>(){ "ACTIVE", "INACTIVE", "PROSPECT", "SUSPENDED" }; 
private static Random randStatus = new Random(); 

public string RandomStatusTypes() 
{ 
    int index = randStatus.Next(0, StatusTypes.Count); 
    return StatusTypes[index]; 
} 

不要創建方法本身的隨機實例。否則,當方法調用非常快時(如在循環中),您將創建相同的狀態。您應該使用一個字段(如上所示)或將該隨機作爲參數傳遞給該方法。

我也感動了列表的方法之外,因爲它是無效的,始終創造它時,它不會改變反正。最後我用StatusTypes.Count,以確保你總是使用一個有效的範圍內,即使你會改變未來的列表(f.e。添加新的狀態)。

+0

真棒謝謝! – CSharpDev4Evr

+0

Hi Both:只是爲了讓你知道這裏有兩個錯誤。 (1)。 'StatusTypes.Count'應該是一個'method()'(2)。列表隨時可能超出範圍。 – Kaf

+0

@Kaf:'Count'是['List '](http://msdn.microsoft.com/en-us/library/27b47ht3.aspx)的屬性(不是方法)。它不能超出範圍,因爲我已經使用了'Random.Next'的Count屬性。 –

0

如果你在選擇從下拉列表的值有興趣,你應該隨意改變SelectedIndex屬性:

Random randStatus = new Random(); 
public void RandomStatusTypes() 
{ 
      ddlStatus.SelectedIndex = randStatus.Next(ddlStatus.Items.Count); 
} 

這將隨機變化給下拉列表中的任意值。請注意,它採用ddlStatus.Items.Count所以,如果你曾經添加或刪除項目,你將不必修改此代碼。

0

如果需要隨機值的下拉列表,你應該SelectedIndex屬性設置爲一個隨機數

public void RandomStatusTypes() 
    { 
     List<string> statusTypes = new List<string> { "ACTIVE", "INACTIVE", "PROSPECT", "SUSPENDED" }; 
     Random randStatus = new Random(); 
     dropList.Items.AddRange(statusTypes); 
     dropList.SelectedIndex = randStatus.Next(0, 3); 
    } 
0

試試這個functionreturns a random item從過往myList

public string RandomListItem(List<string> myList) 
{ 
    int randNo = new Random().Next(0, myList.Count()); 
    return myList[randNo]; 
} 
+0

感謝您的幫助! – CSharpDev4Evr

+0

當我在方法中引用這些值時,是否必須包含整個名稱列表? – CSharpDev4Evr

0

首先你需要從方法(無效=它沒有返回)返回指數爲selected valueDropDownList使用。

public int RandomStatusTypes() 
{ 
    List<string> statusTypes = new List<string> { "ACTIVE", "INACTIVE", "PROSPECT", "SUSPENDED" }; 
    Random randStatus = new Random(); 
    return randStatus.Next(0, statusTypes.Count); 
} 

在此之後,你可以什麼地方調用該方法是這樣

var statusForDropDown= RandomStatusTypes(); 

並分配statusForDropDownDropDownList

 MyDropDownList.SelectedIndex=statusForDropDown; 
相關問題