2011-01-25 4 views
1

Причина, по которой я хочу обновить динамику, заключается в том, что я использую objectdatasource, а у моего объекта objectatatource есть коллекция объектов, и внутри этого объекта у меня есть другой объект, к которому я хотел получить доступ, например, для примера :Как получить шаблон шаблона из кода позади

+Student 
    ...... 
    ...... 
    ...... 
    -Courses 
    ......... 
    ......... 
    Name 

конец Обновление

как я связываю TemplateField из кода позади?

<asp:Gridview ID="gridview1" runat="Server"> 
<columns> 
<asp:TemplateField HeaderText="Name" SortExpression="Name"> 
        <ItemTemplate>      
        </ItemTemplate> 
       </asp:TemplateField> 

</columns> 
</asp:Gridview> 
+0

У вас есть список курсов или только один курс типа Student? –

ответ

3

Прежде всего укажите свое ключевое поле в элементе управления GridView, просто добавьте атрибут net в разметку GridView: datakeynames="StudentID".

Вы можете использовать оба обработчика событий для GridView: RowDataBound или RowCreated. Просто добавьте один из этих обработчиков событий и найдите там элемент управления, который помещен в ваш ItemTemplate. Как здесь, например:

void ProductsGridView_RowCreated(Object sender, GridViewRowEventArgs e) 
    { 

    if(e.Row.RowType == DataControlRowType.DataRow) 
    { 
     // Retrieve the LinkButton control from the first column. 
     Label someLabel = (Label)e.Row.FindControl("someLabel"); 
     if (someLabel != null) 
     { 
      // Get Student index 
      int StudentId = (int)GridView.DataKeys[e.Row.RowIndex].Values[0]; 
      // Set the Label Text 
      // Define here all the courses regarding to current student id    
      someLabel.Text = // 
     } 
    } 

    } 

Этот пример получил от MSDN

+0

это не сработает, потому что у меня есть основная коллекция объектов. У меня есть другой объект, который я хочу получить в его свойстве '+ Student withint Student у меня есть объект Courses ', и я хочу получить доступ к этому' course.name' –

+0

i обновил свой вопрос –

+0

, даже если я определяю ключ в своих datakeynames, не будет работать, потому что, поскольку я сказал, что у меня есть пользовательский объект, правильным способом является 'MyClass obj = (MyClass) (e.Row.DataItem);' я приму свой ответ. –

-1

Вот некоторые примеры кода из MSDN:

http://msdn.microsoft.com/en-us/library/aa479353.aspx

Это в VB, но вы должны быть в состоянии найти C# также :-)

Если следовать этой ссылке и прокрутите вниз, вы найдете пример кода:

http://bytes.com/topic/asp-net/answers/624380-gridview-generated-programmatically

+0

Я обновил свой вопрос –

+0

Рассмотрите возможность использования мастер-данных, чтобы разделить это. – IrishChieftain

Смежные вопросы