2013-04-14 63 views
0

我有一個需要修改幫助的C#.NET方法。該方法的代碼現在看起來是這樣的:試圖將單個C#.NET方法應用於多個目標

 Model1.Items.Clear(); 

     Color1.Items.Clear(); 

     Voltage1.Items.Clear(); 



     Model1.DataSource = modelList; 

     Color1.DataSource = colorList; 

     Voltage1.DataSource = voltagelist; 



     Model1.DataBind(); 

     Color1.DataBind(); 

     Voltage1.DataBind(); 

型號1,顏色1和電壓1的下拉菜單中的所有ID的逐漸加入基於用戶輸入選項,在其他地方處理。我的問題是,根據用戶想要輸入多少數據,每個菜單最多可以有15個獨立的實例。

這些菜單的ID會遞增(Model1,Model2 ... Color1,Color2 ...等),並且爲了方便起見,它們將全部硬編碼到應用程序中,而不是在運行時創建。

這些DDL的每一組都會有自己的輸入框,因此輸入到userInput5的輸入將觸發例如Model5,Color5和Voltage5的羣體。我的想法是,我包含一個變量,我可以應用該集合的編號,並將此方法更改爲「Model [number] .Items.Clear();」等等,但我不知道如何實現這一點。

對不起,對於低級別的問題,但任何幫助,將不勝感激。

+1

是否知道可以使用用戶控件(ascx)放置在中繼器的項目模板中來完成此操作? – ajakblackgoat

+0

我沒有想到這個,所以謝謝。這將爲我節省一點時間,因爲我不必多次重新創建菜單。我會玩弄它,看看我是否無法使它工作。 – bmurrell30

+0

不,我很抱歉,但經過審查,我發現Repeater在這種情況下不會工作。 1.我沒有將轉發器綁定到數據源(這裏沒有XML或SQL)2。沒有辦法控制中繼器重複的次數(我可以看到)和3.這並不能回答我如何針對任何這些下拉菜單的特定實例的問題。所以,我將不得不堅持我原來的計劃和問題。 – bmurrell30

回答

0

讓我建議你通過使用中繼器達到此目的的一種方法。無需爲了簡單而創建用戶控件。對不起,我在VB中編寫代碼,下面是我的示例。希望你能理解這個邏輯。

下面是該轉發器的ItemTemplate標記:

<asp:Repeater ID="Repeater1" runat="server"> 
    <ItemTemplate> 
    <!-- your ddl's and any other controls --> 
    <asp:DropDownList ID="ddlModel" runat="server" /> 
    <asp:DropDownList ID="ddlColor" runat="server" /> 
    <asp:DropDownList ID="ddlVolt" runat="server" /> 
    </ItemTemplate> 
</asp:Repeater> 
  1. 你並不需要有中繼器的工作實際數據源。可以將中繼器結合:

    Dim a As New ArrayList() From {1, 2, 3, 4, ..., n} 
    Repeater1.DataSource = a 
    Repeater1.DataBind() 
    
  2. 可以由陣列中設置多少個項目控制({1, 2, 3, 4, ..., n}其中「n」爲至多組數顯示)

  3. 要訪問的任何的下拉菜單從中繼器以外:

    Dim itm As RepeaterItem = Repeater1.Items(1) ' to get 2nd item in the repeater 
    Dim ddlModel As DropDownList = DirectCast(itm.FindControl("ddlModel"), DropDownList) 
    Dim ddlColor As DropDownList = DirectCast(itm.FindControl("ddlColor"), DropDownList) 
    Dim ddlVolt As DropDownList = DirectCast(itm.FindControl("ddlVolt"), DropDownList)   
    
  4. 要從中繼器的項中訪問,與上述相同,除了第一行:

    Dim itm As RepeaterItem = sender.NamingContainer 
    

    ,或者裏面的ItemDataBound

    Dim itm As RepeaterItem = e.Item 
    
+0

也許,你會發現這個有用的:http://www.developerfusion.com/tools/convert/vb-to-csharp/ –

0

根據我從你的問題明白了,你可以創建與源一起接受DropDownLists的方法和調用此方法時,你需要,通過適當控件:

public void BindDropDowns(DropDownList ddlModel, DropDownList ddlColor, DropDownList ddlVoltage, 
          List<Model> modelList, List<Color> colorList, List<Voltage> voltagelist) 
{ 
    ddlModel.Items.Clear(); 
    ddlColor.Items.Clear(); 
    ddlVoltage.Items.Clear(); 

    ddlModel.DataSource = modelList; 
    ddlColor.DataSource = colorList; 
    ddlVoltage.DataSource = voltagelist; 

    ddlModel.DataBind(); 
    ddlColor.DataBind(); 
    ddlVoltage.DataBind(); 
} 
相關問題