2009-02-03 6 views
0

У меня уже есть собственный графический чертеж в моем GridView, используя SetRenderMethodDelegate в строке заголовка в методе OnRowCreated. У меня возникают проблемы с попыткой добавить LinkButtons в новую строку заголовка.Пользовательский заголовок в GridView

Это то, что выглядит как RenderMethod:

private void RenderSelectionMode(HtmlTextWriter output, Control container) 
{ 
    TableHeaderCell cell = new TableHeaderCell(); 
    cell.Attributes["colspan"] = container.Controls.Count.ToString(); 
    AddSelectionModeContents(cell); 
    cell.RenderControl(output); 

    output.WriteEndTag("tr"); 

    HeaderStyle.AddAttributesToRender(output); 
    output.WriteBeginTag("tr"); 

    for(int i = 0; i < container.Controls.Count; i++) 
    { 
     DataControlFieldHeaderCell cell = (DataControlFieldHeaderCell)container.Controls[i]; 
     cell.RenderControl(output); 
    } 
} 

private void AddSelectionModeContents(Control parent) 
{ 
    // TODO: should add css classes 

    HtmlGenericControl label = new HtmlGenericControl("label"); 
    label.InnerText = "Select:"; 

    selectNoneLK = new LinkButton(); 
    selectNoneLK.ID = "SelectNoneLK"; 
    selectNoneLK.Text = "None"; 
    //selectNoneLK.Attributes["href"] = Page.ClientScript.GetPostBackClientHyperlink(selectNoneLK, ""); 
    //selectNoneLK.Click += SelectNoneLK_Click; 
    selectNoneLK.Command += SelectNoneLK_Click; 

    selectAllLK = new LinkButton(); 
    selectAllLK.ID = "SelectAllLK"; 
    selectAllLK.Text = "All"; 
    //selectAllLK.Attributes["href"] = Page.ClientScript.GetPostBackClientHyperlink(selectAllLK, ""); 
    //selectAllLK.Click += SelectAllLK_Click; 
    selectAllLK.Command += SelectAllLK_Click; 

    parent.Controls.Add(label); 
    parent.Controls.Add(selectNoneLK); 
    parent.Controls.Add(selectAllLK); 
} 

Как вы можете видеть, я пробовал разные способы, чтобы получить мои LinkButtons работает (ни один не работал, хотя). В LinkButtons отображаются как простые теги якоря, как это: < A ID = «SelectNoneLK» > None </а >

Я знаю, что есть что-то не так с тем, что идентификатор выглядит так, так как я использую Главная страница для этого и идентификатора должна быть чем-то длиннее.

Любая помощь будет оценена!

Ник

ответ

1

Я предполагаю, что, поскольку клетка не является частью иерархии управления (вы никогда не добавить его к столу), то LinkButton еще никогда не найти IContainer родителей, чтобы переписать их идентификаторы.

Я, как правило, решаю эти проблемы, используя отличный RenderPipe control, который позволяет мне объявлять элементы управления в одном месте, но оказывать их в другом месте.

+0

Я вместо этого добавил их через иерархию в OnDataBound, но, к сожалению, строка исчезает, если обратная передача происходит без привязки данных. Кроме того, хотя они теперь доступны для кликабельности, и идентификатор кажется правильным, похоже, что не произошло событие. –

+0

Вы должны повторно добавить их (поскольку они являются динамическими элементами управления) для обратной передачи, чтобы запустить событие. –