программное создание многоколоночного radcombobox

У кого-нибудь есть ссылка на пример кода или вы можете предоставить фрагмент для выполнения этой задачи. У меня ничего не выходит на сайте Telerik


person Tim    schedule 09.11.2011    source источник
comment
Google   -  person Damith    schedule 09.11.2011
comment
спасибо UnhandledException. Я знаю, что такое Google и как им пользоваться. Я также знаю, как использовать и многозадачность. Спасибо за ваш вклад.   -  person Tim    schedule 09.11.2011


Ответы (2)


Некоторое время назад мне нужно было кое-что собрать, и я нашел фрагменты кода, разбросанные по всему сайту и блогам Telerik. Итак, я не хочу брать "кредит" за создание приведенного ниже кода... но вот что я использую:

Добавьте это в свой css

.rcbHeader ul, .rcbFooter ul, .rcbItem ul, .rcbHovered ul, .rcbDisabled ul
{
    width: 100%;
    display: inline-block;
    margin: 0;
    padding: 0;
    list-style-type: none;
}

.col1, .col2, .col3
{
    float: left;
    width: 100px;
    margin: 0;
    padding: 0 0px 0 0;
    line-height: 14px;
}

Если вам нужен "счетчик предметов", добавьте эту функцию JavaScript

function UpdateItemCountField(sender, args) {
        //set the footer text
        sender.get_dropDownElement().lastChild.innerHTML = "A total of " + sender.get_items().get_count() + " items";
    }

Вот код RadComboBox

<telerik:RadComboBox runat="server" ID="rcbInvoiceNumber" Height="190px" Width="350px"
    MarkFirstMatch="true" EnableLoadOnDemand="true" HighlightTemplatedItems="true"
    OnClientItemsRequested="UpdateItemCountField" OnItemDataBound="rcbInvoiceNumber_ItemDataBound"
    OnItemsRequested="rcbInvoiceNumber_ItemsRequested" EmptyMessage="Enter Invoice Number"
    ChangeTextOnKeyBoardNavigation="true" ValidationGroup="QuickPay">
    <HeaderTemplate>
        <ul>
            <li class="col1">Invoice Number</li>
            <li class="col2">PO Number</li>
            <li class="col3">Invoice Total</li>
        </ul>
    </HeaderTemplate>
    <ItemTemplate>
        <ul>
            <li class="col1">
                <%# DataBinder.Eval(Container.DataItem, "InvoiceNumber") %></li>
            <li class="col2">
                <%# DataBinder.Eval(Container.DataItem, "PONumber")%></li>
            <li class="col3">
                <%# DataBinder.Eval(Container.DataItem, "TotalInvoice", "{0:C}")%></li>
        </ul>
    </ItemTemplate>
    <FooterTemplate>
        A total of
        <asp:Literal runat="server" ID="RadComboItemsCount" />
        items
    </FooterTemplate>
</telerik:RadComboBox>

Наконец код

    protected void rcbInvoiceNumber_DataBound(object sender, EventArgs e)
    {
        //set the initial footer label
        ((Literal)rcbInvoiceNumber.Footer.FindControl("RadComboItemsCount")).Text = Convert.ToString(rcbInvoiceNumber.Items.Count);
    }

    protected void rcbInvoiceNumber_ItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)
    {
        var invs = new VInvoicesCasesTotalCollection()
            .Load();

        rcbInvoiceNumber.DataSource = invs.ToDataTable();
        rcbInvoiceNumber.DataBind();
    }

    protected void rcbInvoiceNumber_ItemDataBound(object sender, RadComboBoxItemEventArgs e)
    {
        //set the Text and Value property of every item
        //here you can set any other properties like Enabled, ToolTip, Visible, etc.
        e.Item.Text = ((DataRowView)e.Item.DataItem)["InvoiceNumber"].ToString();
        e.Item.Value = ((DataRowView)e.Item.DataItem)["InvoiceID"].ToString();
    }

Следует отметить, что я добавил Telerik.Web.UI в свои операторы использования.

Надеюсь, это, по крайней мере, поможет направить вас в правильном направлении.

person AJ Tatum    schedule 09.11.2011
comment
Спасибо, это похоже на ссылку, которую я разместил в другом посте в качестве комментария. Я делаю все это в коде, как в этом примере, но я не вижу, чтобы он правильно работал с «загрузкой по запросу». Вы пробовали это? - person Tim; 09.11.2011
comment
Технически мы используем Load On Demand, так как когда пользователь начинает что-то вводить, вызывается OnItemsRequested. Однако, когда я добавил EnableAutomaticLoadOnDemand в свой RadComboBox, я получил ошибку, но это было исправлено путем добавления источника данных в мой Page_Init. Ссылка на demos.telerik.com/aspnet-ajax/combobox /примеры/ - person AJ Tatum; 10.11.2011
comment
Я оглянулся на образец телерика после вашего первого поста и заметил, что они тоже использовали Loas ON Demand, но, как и вы, они использовали источник данных на странице. Я загружаю объекты в код позади. Я еще не сдался. Я чувствую, что это должно сработать. - person Tim; 10.11.2011

Я видел ссылки на этой странице и искал ответ на их странице, потому что я был уверен, что видел это раньше.

Ссылка, упомянутая в разделе комментариев к сообщению clk, действительно является демонстрацией, но если вам нужны основы и, возможно, самая простая документация для просмотра, ее можно найти здесь.

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

Надеюсь хоть немного поможет.

person KreepN    schedule 10.11.2011