程序化创建多列radcombobox

时间:2011-11-09 14:47:18

标签: c# asp.net telerik radcombobox

任何人都有代码示例的链接,或者您可以提供一个代码段来完成此任务。我在Telerik网站上空白了

2 个答案:

答案 0 :(得分: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添加到我的using语句中。

希望这至少有助于引导你朝着正确的方向前进。

答案 1 :(得分:0)

我看过这个页面上的链接并在他们的页面上搜索答案,因为我确信我以前见过它。

clk帖子的评论部分中提到的链接确实是一个演示,但是如果你想要基础知识并且很可能是最简单的文档,那么here.

正如您所提到的那样,您正在为后面的代码加载数据,因此您可以做的是首先加载实体,然后设置数据源,然后继续关注页面加载中的其余链接文章代码。

希望它有所帮助。