如何在RadGrid中获取RadAutoCompleteBox以在编辑模式下显示绑定值?

时间:2015-01-21 14:34:21

标签: asp.net vb.net telerik radgrid

我希望我只是做一些不正常的事情(刚从winforms转移到web-dev,而且是Telerik的新人)。我正在更新一个主要有RadGrid的应用程序,它显示正常显示文本的GridBoundColumns,并在编辑行时转向文本框。我正在将其中一列转换为GridTemplateColumn,它使用EditItemTemplate中的RadAutoCompleteBox。在正常(显示?)模式下,绑定到项目的文本显示正确,但是当行进入编辑模式时,AutoCompleteBox正确绑定到其自己的数据源,但不显示该列的网格行值。我该怎么做?

我有:

    <telerik:GridTemplateColumn UniqueName="PartNumber" HeaderText="Part Number"  ItemStyle-CssClass="editWidth"
            FilterControlAltText="Filter PartNumber column" FilterControlWidth="85%">
        <ItemTemplate><%#DataBinder.Eval(Container.DataItem, "PartNumber")%></ItemTemplate>
        <EditItemTemplate>
            <%#DataBinder.Eval(Container.DataItem, "PartNumber")%>
            <telerik:RadAutoCompleteBox runat="server" ID="racbPN" DataSourceID="ItemIdSource" DataTextField="IMA_ItemID" 
                HighlightFirstMatch="true" InputType="Text" TextSettings-SelectionMode="Single" MaxResultCount="200" MinFilterLength="4" 
                    Delimiter="" DropDownHeight="300px" DropDownWidth="200px">
            </telerik:RadAutoCompleteBox>
        </EditItemTemplate>
        <HeaderStyle Width="190px"></HeaderStyle>
    </telerik:GridTemplateColumn>

搜索Telerik论坛,我看到了一些将代码放入ItemDataBound事件的引用。该代码通常在C#中,我转换为VB的实现永远不会工作。我不知道我是否在误译,或者他们不是我的情况的答案,但这里有一个我在代码隐藏中尝试过的例子:

        If e.Item.IsInEditMode Then
            Dim item As GridEditableItem = e.Item
            If Not e.Item Is GetType(IGridInsertItem) Then
                Dim auto As RadAutoCompleteBox = CType(item.FindControl("racbPN"), RadAutoCompleteBox)
                auto.Entries.Add(New AutoCompleteBoxEntry(item("PartNumber").Text, item("GSIS_AMRKey").Text))
            End If
        End If

感谢您一看,如果我遗漏了重要内容,请告诉我其他需要提供的信息。

(radautocompletebox应该是有效的标签吗?)

1 个答案:

答案 0 :(得分:1)

Telerik技术支持回复给我一个答案。上面在OnItemDataBound事件中列出的代码几乎是正确的。这有效:

        If e.Item.IsInEditMode Then
            If Not e.Item Is GetType(IGridInsertItem) Then
                Dim partNumber As String = DirectCast(e.Item.DataItem, DataRowView)("PartNumber").ToString
                Dim auto As RadAutoCompleteBox = DirectCast(e.Item.FindControl("racbPN"), RadAutoCompleteBox)
                auto.Entries.Add(New AutoCompleteBoxEntry(partNumber))
            End If
        End If