在包含数据源的 DevExpress 组合框中选择具有空值的项
本文关键字:选择 空值 包含 数据源 DevExpress 组合 | 更新日期: 2023-09-27 18:36:03
如何根据SQLDataReader值在组合框中选择值。
ASP 代码:
<asp:SqlDataSource ID="PREFERENCE_DS" runat="server"
ConnectionString="<%$ ConnectionStrings:ASPNETDBConnectionStringTEST %>"
SelectCommand="SELECT [ID], [NAME] FROM [OBJECTS] WHERE ([CLASSID] = @CLASSID) UNION ALL SELECT NULL, ' Нет'">
<SelectParameters>
<asp:Parameter DefaultValue="3" Name="CLASSID" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
<dx:ASPxComboBox ID="PREFERENCE" runat="server" SelectedIndex="0" Width="430px"
ClientInstanceName="preference" AutoPostBack="True"
DataSourceID="PREFERENCE_DS" TextField="NAME" TextFormatString="{0}"
ValueField="ID">
<Columns>
<dx:ListBoxColumn FieldName="ID" Visible="False" />
<dx:ListBoxColumn Caption="Преференция" FieldName="NAME" />
</Columns>
</dx:ASPxComboBox>
我尝试
PREFERENCE.Value = reader["PREFERENCE"];
和
if (reader["PREFERENCE"] != null)
PREFERENCE.Text = reader["PREFERENCE"].ToString();
else
PREFERENCE.SelectedIndex = PREFERENCE.Items.FindByValue(DBNull.Value).Index;
但它不起作用。
根据您的代码,我想我明白您在这里要做什么。 您的 select 语句将在联合上返回一个 null,所以我假设您要选择它。 我设置了一个测试项目并对 Databound 事件进行选择,这似乎工作正常。 需要转到组合框控件的属性,并为 DataBound 设置事件。 使用以下代码:
protected void PREFERENCE_DataBound(object sender, EventArgs e)
{
for (int i = 0; i < PREFERENCE.Items.Count; i++)
{
if (PREFERENCE.Items[i].GetValue("ID") == DBNull.Value)
PREFERENCE.Items[i].Selected = true;
}
}
我在这里选择了 ID 作为字段来检查空值,但您可以使用名称或任何其他您想要的字段。