2017-03-16 4 views
0

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(); 
} 

Antwort

0

Ich habe dieses Problem behoben. Ich erhalte diesen Fehler, weil ich die ursprünglichen dynamischen DataGrid-Spalten nicht gelöscht habe, damit die Steuerelemente denselben Namen haben.

Verwandte Themen