2015-03-24 1 views
0

Пусть у меня есть таблица данных, которая содержит данные в следующем составе:Связывание повторитель с Словаре <строка, список <myClass>>

Revenue-Certification-1000 Revenue-IT экзамен Done-1000 Acadmics-Value1-100 Acadmics-Value23-1000 ... и так далее

я написал запрос, который будет возвращать мне словарь с ключом в качестве дохода и академиков, и в соответствии с этими ключами общего списка, который содержит все другие значения.

Теперь у меня есть требование, когда я должен показать элемент управления ретранслятора, в котором 1 строка будет ключом этого Словаря, а под этим ключом - все ассоциированные значения.

Я не могу понять, как достичь этого ... ретранслятор под повторителем или что-то еще. Пожалуйста, помогите разработать ретранслятор или любой другой элемент управления и привязать его к ним. Заранее спасибо.

+0

Поиск в Интернете для мастер-детали просмотра. – Aybe

ответ

0

Прежде всего, я хотел бы сказать спасибо @Aybe за его ответ.

Я пробовал много и, наконец, получил то, что ожидается.

 <div> 
     <table> 
      <asp:Repeater ID="Repeater1" runat="server"> 
       <ItemTemplate> 
        <tr> 
         <td> 
          <%#Eval("Key") %> 
          <div> 
           <asp:Repeater ID="Repeater2" runat="server"> 
            <ItemTemplate> 
             <asp:Label runat="server" ForeColor="Red" Text='<%#Eval("MetricName") %>'></asp:Label><br /> 
             <asp:Label runat="server" ForeColor="Red" Text='<%#Eval("FiscalYeartarget") %>'></asp:Label><br /> 
            </ItemTemplate> 
           </asp:Repeater> 
          </div> 
         </td> 
        </tr> 
       </ItemTemplate> 
      </asp:Repeater> 
     </table> 
    </div> 

и в C# - Я создал словарь, как показано ниже:

public Dictionary<string, List<custom>> query1; 
string connstr = "Data Source=(local);Initial Catalog=t;Integrated Security=True"; 
    string query = "SELECT * FROM [td]"; 
    DataTable dTable = new DataTable(); 

    using (SqlConnection sqlconn = new SqlConnection(connstr)) 
    { 
     sqlconn.Open(); 
     SqlDataAdapter sqlda = new SqlDataAdapter(query, sqlconn); 
     sqlda.Fill(dTable); 

     query1 = dTable.AsEnumerable().GroupBy(x => x.Field<string>("HeaderName")) 
      .ToDictionary(grp => grp.Key, x => x.Select(y => new custom() 
      { 
       MetricName = y.Field<string>("MetricName/KPI"), 
       FiscalYeartarget = y.Field<double>("FiscalYeartarget").ToString(), 
       Status = y.Field<string>("Status"), 
       VTF = y.Field<double>("VTF").ToString(), 
       VTF_Percent = y.Field<double>("VTF %").ToString(), 
       YTDResults = y.Field<double>("YTDResults").ToString(), 
       YTDTarget = y.Field<double>("YTDTarget").ToString() 
      }).ToList()); 

     Repeater1.DataSource = query1; 
     Repeater1.DataBind(); 

     var counter = 0; 
     foreach (var x in query1) 
     { 
      Repeater rptr = (Repeater)Repeater1.Controls[counter].FindControl("Repeater2"); 
      rptr.DataSource = x.Value.ToList(); 
      rptr.DataBind(); 
      counter++; 
     } 
    } 

и, наконец, мой пользовательский класс:

public class custom 
{ 
    public string MetricName { get; set; } 
    public string FiscalYeartarget { get; set; } 
    public string YTDTarget { get; set; } 
    public string YTDResults { get; set; } 
    public string VTF { get; set; } 
    public string VTF_Percent { get; set; } 
    public string Status { get; set; } 
} 
Смежные вопросы