Problem with eventhandler in c#

L

lk

Hi

I have a weird problem that I do not quite understand. I have a c# web
page which is dynamically build when loading page. Three different
views exist, and I build two different tables dynamically. My problem
is that I add some link buttons to these tables, but their "Click"
event is not handled correctly. I fires an event ok, but it is the
wrong function that it calls.
The "ItemGroupAllOnLoad" is called when the page is loaded, and the
link buttons in this table works fine. When I click the button it calls
"OnItemGroupSelected". Then table 2 is loaded ok but when I click the
link button in this table it calls "OnItemGroupSelected" instead of
"OnItemSelected" ?!?
I have pasted my code below:

//table 1
protected void ItemGroupAllOnLoad(object sender, EventArgs e)
{
Model_item_group model = new Model_item_group();
Data_item_group data;
List_item_group list;
//get list of groups from db
list = model.SelectListItemGrop();
//loop through list
data = list.Get();
while (data.GetID() > 0)
{
TableRow row = new TableRow();
TableCell cell = new TableCell();
TableCellCollection cells;
//HtmlAnchor link = new HtmlAnchor();
LinkButton link = new LinkButton();

//set link
link.Text = data.GetName();
link.ID = data.GetID().ToString();
link.Click += new EventHandler(this.OnItemGroupSelected);

//get cell collection
cells = row.Cells;
//add link to cell
cell.Controls.Add(link);
//add cell to cell collection
cells.Add(cell);
//add row to table
Table1.Rows.Add(row);

//get next group
data = list.Get();
}
}

//table 2
void OnItemGroupSelected(object sender, EventArgs e)
{
LinkButton linkFrom = (LinkButton)sender;
Model_item model = new Model_item();
Data_itemFilter filter = new Data_itemFilter();
Data_item data;
List_item list;

//head line
GroupChosen.Text = linkFrom.Text;

//load items for selected group
filter.SetGroupID(int.Parse(linkFrom.ID));
list = model.SelectListItem(filter);
if (list.GetCount() > 0)
{
data = list.Get();
while (data.GetID() > 0)
{
TableRow row = new TableRow();
TableCell cellName = new TableCell();
TableCell cellImage = new TableCell();
TableCell cellPrice = new TableCell();
TableCellCollection cells;
//HtmlAnchor link = new HtmlAnchor();
LinkButton linkBut = new LinkButton();
Image image = new Image();

//set link
linkBut.Text = data.GetName();
linkBut.ID = data.GetID().ToString();
linkBut.Click += new EventHandler(this.OnItemSelected);

if (data.GetSmallImgLnk().Length > 0)
image.ImageUrl = data.GetSmallImgLnk();
else
image.ImageUrl = "Images\\empty.jpg";

//get cell collection
cells = row.Cells;
//add link to cell
cellImage.Controls.Add(image);
cellName.Controls.Add(linkBut);
cellPrice.Text = data.GetUnitPrice().ToString();
//add cell to cell collection
cells.Add(cellImage);
cells.Add(cellName);
cells.Add(cellPrice);
//add row to table
TableItems.Rows.Add(row);

data = list.Get();
}
}

//set active view
MultiView1.SetActiveView(ItemGroupOne_View);
}

//function that is not getting called
void OnItemSelected(object sender, EventArgs e)
{
LinkButton linkFrom = (LinkButton)sender;
Model_item model = new Model_item();
Data_item data;

//get item
data = model.SelectItem(int.Parse(linkFrom.ID));
if (data.GetID() > 0)
{
ItemName.Text = data.GetName();
}
MultiView1.SetActiveView(Item_View);
}

Regards
Lasse Kjærsgaard
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,904
Latest member
HealthyVisionsCBDPrice

Latest Threads

Top