Hi,
Actually I did it but wonder if there is another way. Here is my code. Any improvements are appreciated.
Actually I did it but wonder if there is another way. Here is my code. Any improvements are appreciated.
protected void RadSkinManager1_PreRender(object sender, EventArgs e) |
{ |
DataTable table = new DataTable(); |
DataRow row; |
table.Columns.Add("ImgUrl"); |
table.Columns.Add("val"); |
table.Columns.Add("txt"); |
row = table.NewRow(); |
row.ItemArray = new string[] { "images/default.gif", "Default", "Default" }; |
table.Rows.Add(row); |
row = table.NewRow(); |
row.ItemArray = new string[] { "images/black.gif", "Black", "Black" }; |
table.Rows.Add(row); |
row = table.NewRow(); |
row.ItemArray = new string[] { "images/forest.gif", "Forest", "Forest" }; |
table.Rows.Add(row); |
RadComboBox skinChooser = RadSkinManager1.FindControl("SkinChooser") as RadComboBox; |
skinChooser.DataSource = table; |
skinChooser.ItemTemplate = new IMGTemplate("ImgUrl"); |
skinChooser.DataTextField = "txt"; |
skinChooser.DataValueField = "val"; |
skinChooser.Width = 240; |
skinChooser.Height = 202; |
skinChooser.DataBind(); |
skinChooser.SelectedValue = RadSkinManager1.Skin; |
} |
class IMGTemplate : ITemplate |
{ |
string pathColumn; |
public IMGTemplate(string imgPathColumn) |
{ |
pathColumn = imgPathColumn; |
} |
public void InstantiateIn(Control c) |
{ |
Image imgt = new Image(); |
imgt.DataBinding += new EventHandler(imgDataBinding); |
c.Controls.Add(imgt); |
} |
void imgDataBinding(object sender, EventArgs e) |
{ |
Image img_ = (Image)sender; |
RadComboBoxItem item = (RadComboBoxItem)img_.BindingContainer; |
DataRowView drv = ((DataRowView)item.DataItem); |
img_.ImageUrl = drv[pathColumn].ToString(); |
} |
} |