DevExpress ASPxComboBox SelectItem is null

anothershrubery picture anothershrubery · Jun 15, 2011 · Viewed 11.7k times · Source

I have an ASPxComboBox which I was able to get filtering correctly on user input. Now I want to save the selected item to the database. But when I try to get the SelectedItem it is null.

ASP

<dxe:ASPxComboBox ID="cboInstructor" runat="server" Width="100%"
            EnableCallbackMode="True" CallbackPageSize="10"
            IncrementalFilteringMode="Contains" ValueType="System.Int32" ValueField="employee_id"
            OnItemsRequestedByFilterCondition="cboInstructor_OnItemsRequestedByFilterCondition_SQL"
            OnItemRequestedByValue="cboInstructor_OnItemRequestedByValue_SQL" TextFormatString="{0} {1}"
            DropDownStyle="DropDown"
        >
            <Columns>
                <dxe:ListBoxColumn FieldName="display_forename" Caption="Forename" />
                <dxe:ListBoxColumn FieldName="display_surname" Caption="Surname" />
            </Columns>
        </dxe:ASPxComboBox>

        <asp:SqlDataSource ID="SqlDataSourceInstruct" runat="server" ConnectionString="Server=testserver;User ID=root;Password=password;Persist Security Info=True;Database=central" ProviderName="MySql.Data.MySqlClient" SelectCommand="GetUser" SelectCommandType="StoredProcedure">
            <SelectParameters>
                <asp:Parameter Name="filter" Type="String" />
                <asp:Parameter Name="startIndex" Type="Int32" />
                <asp:Parameter Name="endIndex" Type="Int32" />
            </SelectParameters>
        </asp:SqlDataSource>
        <asp:SqlDataSource ID="SqlDataSourceInstructPopulate" runat="server" ConnectionString="Server=testserver;User ID=root;Password=password;Persist Security Info=True;Database=central" ProviderName="MySql.Data.MySqlClient" SelectCommand="GetUser" SelectCommandType="StoredProcedure">
        </asp:SqlDataSource>

        <asp:Button ID="btnTest" runat="server" Text="Test" OnClick="btnTest_Click" />

CS

    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void cboInstructor_OnItemsRequestedByFilterCondition_SQL(object source, ListEditItemsRequestedByFilterConditionEventArgs e)
    {
        ASPxComboBox comboBox = (ASPxComboBox)source;

        SqlDataSourceInstruct.SelectParameters.Clear();
        SqlDataSourceInstruct.SelectParameters.Add("filter", TypeCode.String, string.Format("%{0}%", e.Filter));
        SqlDataSourceInstruct.SelectParameters.Add("startIndex", TypeCode.Int32, (e.BeginIndex + 1).ToString());
        SqlDataSourceInstruct.SelectParameters.Add("endIndex", TypeCode.Int32, (e.EndIndex + 1).ToString());
        comboBox.DataSource = SqlDataSourceInstruct;
        comboBox.DataBind();
    }

    protected void cboInstructor_OnItemRequestedByValue_SQL(object source, ListEditItemRequestedByValueEventArgs e)
    {
        long value = 0;
        if (e.Value == null)
            return;
        if (!Int64.TryParse(e.Value.ToString(), out value))
            return;
        ASPxComboBox comboBox = (ASPxComboBox)source;
        SqlDataSourceInstructPopulate.SelectCommand = @"SELECT employee_id, display_surname, display_forename FROM user_record WHERE employee_id = @ID ORDER BY display_forename";
        SqlDataSourceInstructPopulate.SelectCommandType = System.Web.UI.WebControls.SqlDataSourceCommandType.Text;
        SqlDataSourceInstructPopulate.SelectParameters.Clear();
        SqlDataSourceInstructPopulate.SelectParameters.Add("ID", TypeCode.Int64, e.Value.ToString());
        comboBox.DataSource = SqlDataSourceInstructPopulate;
        comboBox.DataBind();
        comboBox.ValueField = "employee_id";
    }

    protected void btnTest_Click(object sender, EventArgs e)
    {
        int iTest = (int)cboInstructor.SelectedItem.GetValue("employee_id");
    }

At the line:

int iTest = (int)cboInstructor.SelectedItem.GetValue("employee_id");

cboInstructor.SelectedItem is null. Anyone have an idea why?

Answer

Mehul picture Mehul · Jul 27, 2011

Anthony,

The SelectedItem is used to specify the item to select. Once an item is selected in the ASPxComboBox, you can use the Value or Text property to reference it.

http://documentation.devexpress.com/#AspNet/DevExpressWebASPxEditorsASPxComboBoxMembersTopicAll

This thread may also help you: http://community.devexpress.com/forums/t/61424.aspx

Thanks.