2015-05-22 3 views
0

У меня есть сценарий, в котором у меня есть шаблон элемента с двумя элементами управления (ярлык и гиперссылка). Основываясь на типе данных, я собираюсь скрыть/показать ярлык/гиперссылку. После проведения исследований и даже поиска документации на сайте Telerik вот что я придумал, и мое свойство .Text всегда является пустой строкой, поэтому я не знаю, что я делаю неправильно.Доступ к значению dataitem в событии RadGrid_ItemDataBound (dataItem ["column"]. Текст всегда пуст)

Ниже приведен пример того, как я привязываю свою сетку к жестко закодированному DataTable. Очевидно, что значение для столбца MARK в первой строке «MARK», поэтому я не понимаю, почему. Text всегда пуст.

protected void gridStudentGrade_NeedDataSource(object sender, GridNeedDataSourceEventArgs e) 
{ 
    //X axis column: "STUDENT" 
    //Y axis column: "COURSE" 
    //Z axis column: "GRADE" 

    DataTable table = new DataTable(); 
    table.Columns.Add("Course", typeof(string)); 
    table.Columns.Add("Student1", typeof(string)); 
    table.Columns.Add("Student2", typeof(string)); 
    table.Columns.Add("Student3", typeof(string)); 

    table.Rows.Add("", "MARK", "BRIAN", "ALEX"); 
    table.Rows.Add("MATH", 80, 95, 70); 
    table.Rows.Add("SCIENCE", 55, 80, 72); 
    table.Rows.Add("ENGLISH", 70, 85, 65); 

    (sender as RadGrid).DataSource = table; 
} 


protected void gridStudentGrade_ItemDataBound(object sender, GridItemEventArgs e) 
{ 
    if (e.Item is GridDataItem) 
    { 
     GridDataItem item = (GridDataItem)e.Item; 

     Label label1 = item.FindControl("label1") as Label; 
     HyperLink hyperlink1 = item.FindControl("hyperlink1") as HyperLink; 


     string student1= item["Student1"].Text; 

     if (student1 == "MARK") 
     { 
      label1.Visible = true; 
      hyperlink1.Visible = false; 
     } 
     else 
     { 
      label1.Visible = false; 
      hyperlink1.Visible = true; 
     } 
    } 
} 

ответ

0

Код, который вы показали, выглядит хорошо. Однако вам необходимо убедиться, что для свойства AutoGenerateColumns RadGrid установлено значение true. Таким образом, разметка сетки будет выглядеть так:

<telerik:RadGrid ID="gridStudentGrade" runat="server" 
    OnNeedDataSource="GridItems_NeedDataSource" 
    OnItemDataBound="gridStudentGrade_ItemDataBound"> 
    AutoGenerateColumns="true" 
</telerik:RadGrid> 
+0

Это была моя ошибка. Я действительно пытался получить доступ к значению .Text GridTemplateColumn ... В этом случае мне просто нужно найти элемент управления в ItemTemplate и получить его значение свойства .Text. – JTunney