1

現在、データベースから取得した値が空白の場合、バインディングでエラーが発生してエラーが発生しました。

それを修正するために、代わりにデータベースの値をラベルにバインドし、コンボボックスのデータバインドイベントのアイテムをループして、ラベルと照合しています。一致が見つかった場合、コンボボックスの選択された値をラベルのテキスト値 (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>

Telerik RadGrid を使用して、VB で作業しています。

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 ですが、これは非同期呼び出しです)。どちらも設定されません。

4

1 に答える 1

0

私はそれを考え出した。コンボボックスはラベルの前にバインドされていました。強制的に追加しました

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

そして、それは完璧に機能します。=)

于 2013-09-20T20:16:36.140 に答える