Ich arbeite an einem Projekt, wo ich eine Datagrid TemplateColumn über das Codebehind erstellen muss, das ein ImageButton enthalten wird; Ich habe herausgefunden, was ich auf CodeProject erforderlich, aber das einzige Problem, das ich habe, ist, wenn ich den Code zur Laufzeit ausführen ich die folgende Ausnahme erhalten beim Versuch, die Kontrolle über die ItemDataBound Methode des DatagridITemplate ID muss eindeutig sein
Multiple zu finden Es wurden Steuerelemente mit der gleichen ID 'uxPlusMinusImageButton' gefunden. FindControl erfordert, dass Steuerelemente eindeutige IDs haben.
Dies ist mein Code
DataGridPopulateMethod
private void PopulateDataGrid()
{
TemplateColumn plusMinusContractImage = new TemplateColumn();
plusMinusContractImage.ItemTemplate = new PlusMinusColumn("uxPlusMinusImageButton");
uxSummaryInfoDataGrid.ItemDataBound += new DataGridItemEventHandler(uxSummaryInfoDataGrid_ItemDataBound);
uxSummaryInfoDataGrid.DataSource = contracts;
uxSummaryInfoDataGrid.Columns.Add(new BoundColumn() { HeaderText = "ID", DataField = "ColumnID", Visible = false });
uxSummaryInfoDataGrid.Columns.Add(plusMinusContractImage);
uxSummaryInfoDataGrid.Columns.Add(new BoundColumn() { HeaderText = "Title 1", DataField = "Column1" });
uxSummaryInfoDataGrid.Columns.Add(new BoundColumn() { HeaderText = "Title 2", DataField = "Column2" });
uxSummaryInfoDataGrid.DataBind();
DataGridOnItemDataBoundMethod
private void uxSummaryInfoDataGridItemDataBound(DataGrid summaryDataGrid, DataGridItem item)
{
if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem)
{
SummaryInformation summaryInfo = (SummaryInformation)item.DataItem;
ImageButton plusMinusImageButton = (ImageButton)item.Cells[1].FindControl("uxPlusMinusImageButton");
plusMinusImageButton.Click += new ImageClickEventHandler(PlusMinusImageButton_Click);
Image Klicken
protected void PlusMinusImageButton_Click(object sender, ImageClickEventArgs e)
{
PopulateDataGrid();
}