Список, полный строк данных БД; как загрузить поля в метки? - PullRequest
0 голосов
/ 22 июня 2011

Я реструктурирую учебный проект, чтобы преобразовать его в n-ярус и ОО, и я столкнулся с проблемой. У меня есть 7 продуктов, каждый с несколькими полями, и в представлении может быть 0-7 продуктов (без избыточных экземпляров). Я храню все данные полей для всех продуктов с соответствующим идентификатором отправки в списке, который является вложенным объектом внутри объекта отправки. Все это говорит о том, как мне вытащить определенные поля из этого списка и загрузить с них метки на моей странице?

Пример: отправка с идентификатором 109 имеет Product EPL, а одно поле, Coverage, имеет значение 800. Я хочу, чтобы метка LblEplCov содержала это значение. Код ниже.

слой данных для продуктов

  SqlCommand FidCmd = new SqlCommand(FiduciaryQuery, conn);
    SqlDataReader FidRead = new SqlDataReader();
    FidRead = FidCmd.ExecuteReader();

    Fiduciary TempFid = new Fiduciary();
    TempFid.Entity1 = FidRead.GetString(0);
    TempFid.PrimEx1 = FidRead.GetInt32(1);
    TempFid.Limit1 = FidRead.GetInt32(2);
    TempFid.SIR1 = FidRead.GetInt32(3);
    TempFid.Att1 = FidRead.GetInt32(4);
    TempFid.Premium1 = FidRead.GetInt32(5);
    TempFid.Sublim1 = FidRead.GetInt32(6);

    TempProdList.Add(TempFid);


    SqlCommand CrimeCmd = new SqlCommand(CrimeQuery, conn);

    SqlDataReader dr = null;
    List<Product> lstProduct = new List<Product>();

    dr = CrimeCmd.ExecuteReader();

    CrimeFidelity TempCrime = new CrimeFidelity();
    TempCrime.Entity1 = dr.GetString(0);
    TempCrime.Employees1 = dr.GetInt32(1);
    TempCrime.PrimEx1 = dr.GetInt32(2);
    TempCrime.LimA1 = dr.GetInt32(3);
    TempCrime.DedA1 = dr.GetInt32(4);
    TempCrime.PremA1 = dr.GetInt32(5);
    TempCrime.LimB1 = dr.GetInt32(6);
    TempCrime.DedB1 = dr.GetInt32(7);
    TempCrime.PremB1 = dr.GetInt32(8);

    TempProdList.Add(TempCrime);

    return TempProdList;

Бизнес-уровень

    public static class ProductService
{
    public static List<Product> getProductById(string x)
    {
        return ProductDatabaseLayer.GetProductsById(x);       
    }    
}

уровень представления

    Submission sub = SubmissionService.getSubmissionByID(x);
    Customer cust = CustomerService.getCustomerById(sub.CustomerId1.ToString());
    Broker bro = BrokerService.getBrokerById(sub.BrokerId1.ToString());
    sub.Products1 = ProductService.getProductById(sub.SubmissionId1.ToString());

// Примечание: я полагаю, я бы использовал блок if! Null, чтобы определить, присоединен ли продукт к представлению, но если есть лучший способ, не стесняйтесь упоминать его.

1 Ответ

1 голос
/ 19 июля 2011

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

Если это так, попробуйте использовать повторители

<asp:Repeater ID="InfrastructureRepeater" runat="server">
            <ItemTemplate>
             <asp:CheckBox ID="InfrastructureCheckbox" Text='<%#Eval("InfrastructureName") %>'
        runat="server" />                           
           </ItemTemplate>
        </asp:Repeater>

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

foreach (RepeaterItem item in InfrastructureRepeater.Items)
{
  CheckBox infrastructureCheckBox = item.FindControl("InfrastructureCheckBox") as CheckBox;
 //Do something here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...