Hi Hristo,
This example makes is very good but my issue is that for each row the DropDown will need to contain unique values depending on the Item. Is the only way to do this to add a Unique DropDownProvider for each Row?
The following would be an example (adapted from your example and the following does not work but would love to figure out how it can) — I need a situation where if WebDataGrid is populated by "MakeTable_2" and in MakeTable_2 if "MakeTable" is passed the Value "1" then the dropdown for that Row with have 20 values "Data 0" to "Data 19" and if "MakeTable" is passed the value "2" then that row would have a drop down with only "Data 0" to "Data 5"
Does this issue make sense? is there a way to do this programmatically/on the server side? Do I just need to make unique DropDownProviders for each row?
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
this.WebDataGrid1.DataSource = MakeTable_2();
}
private DataTable MakeTable(int x)
{
// Create a new DataTable.
System.Data.DataTable table = new DataTable("Table");
// Declare variables for DataColumn and DataRow objects.
DataColumn column;
DataRow row;
// Create new DataColumn, set DataType,
// ColumnName and add to DataTable.
column = new DataColumn();
column.DataType = System.Type.GetType("System.Int32");
column.ColumnName = "id";
column.ReadOnly = true;
// Add the Column to the DataColumnCollection.
table.Columns.Add(column);
// Create second column.
column = new DataColumn();
column.DataType = System.Type.GetType("System.Int32");
column.ColumnName = "Item";
column.AutoIncrement = false;
column.Caption = "Item";
column.ReadOnly = false;
column.Unique = false;
// Add the column to the table.
table.Columns.Add(column);
// Create third column.
column = new DataColumn();
column.DataType = System.Type.GetType("System.String");
column.ColumnName = "Data";
column.AutoIncrement = false;
column.Caption = "Data";
column.ReadOnly = false;
column.Unique = false;
// Add the column to the table.
table.Columns.Add(column);
// Make the ID column the primary key column.
DataColumn[] PrimaryKeyColumns = new DataColumn[1];
PrimaryKeyColumns[0] = table.Columns["id"];
table.PrimaryKey = PrimaryKeyColumns;
if (x == 1)
{
for (int i = 0; i <= 20; i++)
{
row = table.NewRow();
row["id"] = i;
row["Item"] = i;
row["Data"] = "Data " + i;
table.Rows.Add(row);
}
}
if (x == 2)
{
for (int i = 0; i <= 5; i++)
{
row = table.NewRow();
row["id"] = i;
row["Item"] = i;
row["Data"] = "Data " + i;
table.Rows.Add(row);
}
}
return table;
}
private DataTable MakeTable_2()
{
// Create a new DataTable.
System.Data.DataTable table = new DataTable("Table");
// Declare variables for DataColumn and DataRow objects.
DataColumn column;
DataRow row;
DataRow row2;
// Create new DataColumn, set DataType,
// ColumnName and add to DataTable.
column = new DataColumn();
column.DataType = System.Type.GetType("System.Int32");
column.ColumnName = "id";
column.ReadOnly = true;
// Add the Column to the DataColumnCollection.
table.Columns.Add(column);
// Create second column.
column = new DataColumn();
column.DataType = System.Type.GetType("System.String");
column.ColumnName = "Item";
column.AutoIncrement = false;
column.Caption = "Item";
column.ReadOnly = false;
column.Unique = false;
// Add the column to the table.
table.Columns.Add(column);
// Create third column.
column = new DataColumn();
column.DataType = System.Type.GetType("System.String");
column.ColumnName = "Data";
column.AutoIncrement = false;
column.Caption = "Data";
column.ReadOnly = false;
column.Unique = false;
// Add the column to the table.
table.Columns.Add(column);
// Make the ID column the primary key column.
DataColumn[] PrimaryKeyColumns = new DataColumn[1];
PrimaryKeyColumns[0] = table.Columns["id"];
table.PrimaryKey = PrimaryKeyColumns;
row = table.NewRow();
row["id"] = 1;
row["Item"] = "This is Item 1";
row["Data"] = "Select…";
DropDownProvider dropdownprovider = (DropDownProvider)WebDataGrid1.EditorProviders["DropDownProvider1"];
dropdownprovider.EditorControl.DataSource = MakeTable(1);
table.Rows.Add(row);
row2 = table.NewRow();
row2["id"] = 2;
row2["Item"] = "This is Item 2";
row2["Data"] = "Select…";
dropdownprovider = (DropDownProvider)WebDataGrid1.EditorProviders["DropDownProvider1"];
dropdownprovider.EditorControl.DataSource = MakeTable(2);
table.Rows.Add(row2);
return table;
}
}
Thanks so much.