【发布时间】:2013-09-20 18:27:50
【问题描述】:
我目前遇到了一个绑定错误,当从数据库中提取的值为空白时会导致错误。
为了修复它,我改为将数据库中的值绑定到标签,然后遍历组合框的数据绑定事件中的项目,与标签匹配。如果找到匹配项,则应该将组合框的选定值设置为标签的文本值 (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=" *" 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,但这是一个异步调用),它也不会设置。
【问题讨论】:
-
来自你的标签是否存在于下拉列表中?
-
我不确定我是否理解?带有数据库值的标签在下拉列表旁边,相同的 GridItem,相同的表行和列。就在它旁边。
-
你不知道如何调试代码?
-
顺便说一句,您的代码显示您没有与 lblText 绑定任何内容。
-
我正在尝试使用“lblSalesManagerValue”标签的文本值设置组合框,测试标签用于我的调试目的,因为 Response.write 在异步调用中不起作用。
标签: asp.net vb.net combobox telerik