下拉列表未在其数据绑定事件中设置selectedValue

时间:2013-09-20 18:27:50

标签: asp.net vb.net combobox telerik

我目前遇到绑定错误,当从数据库中提取的值为空时会导致错误。

在尝试修复它时,我将数据库中的值绑定到标签,然后循环遍历组合框的数据绑定事件中的项目,与标签匹配。如果找到匹配,则应将组合框的选定值设置为标签的文本值(lblSalesManagerValue)。

 <td align="left">
  <asp:Label ID="lblSalesManager" runat="server" Text="Sales Manager:" Width="120px"></asp:Label>
  <telerik:RadComboBox ID="cboSalesManager" runat="server" DataSourceID="SalesManagersDataSource" DataTextField="Name" DataValueField="No." Width="149px" OnDataBound="cboSalesManager_DataBound" />
  <asp:Label ID="lblSalesManagerValue" runat="server" Text='<%# Bind("SM") %>' Visible="false"></asp:Label>
  <asp:Label ID="lblTest" runat="server" Text="" Visible="True"></asp:Label>
  <asp:RequiredFieldValidator id="RequiredFieldValidator4" runat="server"
  ErrorMessage="Please select Sales Manager." Text="&nbsp;*" ControlToValidate= "cboSalesManager"></asp:RequiredFieldValidator>
 </td>

我在VB中工作,使用Telerik RadGrid。

Protected Sub cboSalesManager_DataBound(sender As Object, e As EventArgs)
    Dim cbo As RadComboBox = DirectCast(sender, RadComboBox)
    Dim gr As GridEditFormItem = DirectCast(cbo.Parent.NamingContainer, GridEditFormItem)

    For Each itm As RadComboBoxItem In cbo.Items
        If itm.Value.ToString = CType(gr.FindControl("lblSalesManagerValue"), Label).Text Then

            cbo.SelectedValue = CType(gr.FindControl("lblSalesManagerValue"), Label).Text

            CType(gr.FindControl("lblTest"), Label).Text = CType(gr.FindControl("lblTest"), Label).Text & ";" & cbo.SelectedValue.ToString
        End If
    Next
End Sub

因为我在组合框旁边有一个分号,所有东西都会闪光,但由于某种原因,这个值不会设置,我感到很困惑。

编辑:在玩了一些之后,我发现该标签中没有任何东西会粘住。我尝试设置测试标签(我是response.write,但这是一个异步调用),它也不会设置。

1 个答案:

答案 0 :(得分:0)

我明白了。组合框在标签之前结合。我添加了强制

CType(gr.FindControl("lblSalesManagerValue"), Label).DataBind()

它完美无缺。 =)