我希望我只是做一些不正常的事情(刚从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应该是有效的标签吗?)
答案 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