Info | ||
---|---|---|
| ||
Download the Solution Example |
: Solution file: ComboBoxFromTable.dbsln |
- Solution Name:
- Combo Box From Table
- Software Version
- : v10
- Keywords: Displays. ComboBox. Datasets.
Summary
This solution is an example on demonstrates how to fill populate ComboBoxes through using a data table.
Technical Information
InitiallyFirst, you need to gain obtain control of the ComboBox on the display's ComboBox. This is done with achieved through the following lines:
Code Block |
---|
ComboBox cbxListCodes;
public void DisplayOpening()
{
cbxListCodes = CurrentDisplay.GetControl("cbxListCodes") as ComboBox;
}
|
After that, you need to load your data table. In this example, we will retrieve the entire table asynchronously.
Code Block |
---|
// Selects the whole table @Dataset.Table.Products.WhereCondition = ""; DataTable dt = await @Dataset.Table.Products.SelectCommandAsync(); |
Next, using you can use a simple foreach loop , you can select the desired rows and add them to select which rows to add to the ComboBox, as demonstrated shown in the code snippet below.
Code Block |
---|
// Inserts each row to the combobox foreach (DataRow row in dt.Rows) { cbxListCodes.Items.Add(row["ListCode"]); } |
FinallyNow, by using an EventHandler, you can determine which the value selected by the client selected from the ComboBox and use it to update the other TextBoxes accordingly but this time, we'll use a different method to also retrieve the status of the SelectCommand, enabling easier troubleshooting if any issues occur. To achieve this, we'll create a new variable, "status," which will be passed by reference. This way, we'll change the SelectCommand method to SelectCommandWithStatusAsync.
Finally, we retrieve the status value using a tag, allowing us to monitor the status directly in the property watch.
Code Block |
---|
cbxListCodes.SelectionChanged += new SelectionChangedEventHandler(codeChanged); public void codeChanged(object sender, SelectionChangedEventArgs args) { if(cbxListCodes.SelectedValue == null) return; // Selecting from the DB only the Item corresponding to the Code Selected in the ComboBox // Due to dealing with async methods that can't have multiple outputs // it's used a workaround by passing a reference to an int. // Therefore, we use this reference to be an input for our SelectCommandWithStatusAsync() method // and retrieve its value by getting the Value property. TRef<int> status = new TRef<int>(); @Dataset.Table.Products.WhereCondition = "ListCode = " + cbxListCodes.SelectedValue.ToString(); if(@Dataset.Table.Products.SelectCommandAsyncSelectCommandWithStatusAsync(status).IsCompleted) { @Tag.Status = status.Value; } } |
Reference Information
→ See "Displays and Visualization” (Desktop and Web) for more information.
→ See ComboBox Control for more information.
→ See Datasets Tables for more information.
In this section:
Page Tree | ||||
---|---|---|---|---|
|