如何让 RadGrid 中的 RadAutoCompleteBox 在编辑模式下显示绑定值?
How to get a RadAutoCompleteBox in a RadGrid to display bound value in Edit mode?
我希望我只是做错了一点点(最近从 winforms 转移到 web-dev,并且是 Telerik 的新手)。我正在更新一个主要有一个 RadGrid 显示 GridBoundColumns 的应用程序,它正常显示文本并在编辑行时转向文本框。我正在将这些列之一转换为在 EditItemTemplate 中使用 RadAutoCompleteBox 的 GridTemplateColumn。在正常(显示?)模式下,绑定到项目的文本显示正确,但当行进入编辑模式时,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 应该是一个有效的标签吗?)
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
我希望我只是做错了一点点(最近从 winforms 转移到 web-dev,并且是 Telerik 的新手)。我正在更新一个主要有一个 RadGrid 显示 GridBoundColumns 的应用程序,它正常显示文本并在编辑行时转向文本框。我正在将这些列之一转换为在 EditItemTemplate 中使用 RadAutoCompleteBox 的 GridTemplateColumn。在正常(显示?)模式下,绑定到项目的文本显示正确,但当行进入编辑模式时,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 应该是一个有效的标签吗?)
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