<cc1:BoundLookupColumn HeaderText="Location" SortExpression="Location" DataField="LocationID"></cc1:BoundLookupColumn>In the aspx.cs file you'll have to put some code to load the columns source list like this
BoundLookupColumn blc = BoundLookupColumn.FindColumn(this.grdTeams); blc.LookupDataSource = // some object that implements IListSource or IEnumberabl - I always used a DataTable blc.LookupDataValueField = "LocationID"; blc.LookupDataTextField = "LocationName";Then create a subclass of the mm DataGrid if you haven't already. Then you just need to override at least one of the BindBack methods. Here's how I did it
public override void BindBack(DataSet ds, string tableName) { if (this.EditItemIndex >= 0) { DataGridItem item = this.Items[this.EditItemIndex]; int CellNumber = 0; foreach(TableCell cell in item.Cells) { // Need to check HasControls because if a column is set to ReadOnly, // HasControls() returns false. Trying to process the controls collection // when HasControls() is false, throws an exception. if (cell.HasControls()) { DataGridColumn column = this.Columns[CellNumber]; ... else if (column is BoundLookupColumn) { BoundLookupColumn BoundCol = (BoundLookupColumn)column; if (!BoundCol.ReadOnly) { if (BoundCol.DataField.Length > 0) { DropDownList ddl = (DropDownList)cell.Controls[0]; ds.Tables[tableName].Rows[EditItemIndex][BoundCol.DataField] = ddl.SelectedValue; } } } ... } CellNumber++; } } }