2010-12-13 5 views
1

Настройка текст свойство Вкладки следующим образом:Binding только один столбец

В коде ниже, GetQuesType() возвращает полный QuesType с именем Таблицы поэтому Вкладка генерируется кодом ниже, как равно нет. записей в таблице. Я хочу, чтобы ТОЛЬКО столбец QuesType привязывался к вкладкам. Что я должен изменить в своем коде?

ASPX страница:

**<div id="div1" runat="server"> 
     <telerik:RadTabStrip ID="RadTabStrip1" runat="server" MultiPageID="RadMultiPage1"> 
     </telerik:RadTabStrip> 
     <telerik:RadMultiPage ID="RadMultiPage1" runat="server" Width="100%"> 
      <telerik:RadPageView ID="pv1" runat="server" Selected="true"> 

      </telerik:RadPageView> 
     </telerik:RadMultiPage> 
    </div>** 

Я следовал этому примеру:

http://mono.telerik.com/TabStrip/Examples/PopulatingWithData/DynamicCreation/DefaultCS.aspx

{EDIT}

Модифицированный метод следующим образом:

private void CreateRootTab(DataSet ds) 
    { 
     for (int i = 0; i < ds.Tables[0].Columns.Count; i++) 
     { 
      var tab = new RadTab(); 
      tab.Text = (string) ds.Tables[0].Rows["QuesType"].ItemArray[i];//PROBLEM AREA 
      RadTabStrip1.Tabs.Add(tab); 
     } 
    } 

Теперь он говорит: Лучшего перегружен матч метода «System.Data.DataRowCollection.this [INT]» имеет некоторые недопустимые аргументы

Как еще я должен связать вкладки с колонками QuesType?

нормально это должно было быть так:

tab.Text = ds.Tables[0].Rows[0]["QuesType"].ItemArray[i].ToString(); 

Теперь его дает ошибку на itemArray

«объект» не содержит определения для «ItemArray» и не метод расширения «ItemArray» прием можно найти первый аргумент типа «объект» (вы не указали директиву использования или ссылку на сборку?)

+0

Возможно, вы должны переименовать заголовок в нечто вроде «Ошибка при ссылке на объекты объекта в DataColumn DataRow». Этот вопрос не имеет ничего общего с привязкой данных. В положительной ноте вы подробно описали свою проблему. Браво! Double-bravo для использования компонентов Telerik! :) –

ответ

1

Тип по умолчанию, возвращаемый строкой столбец Object. Вы должны бросить столбец, возвращаемый этим утверждением ...

ds.Tables[0].Rows[0]["QuesType"] 

... к соответствующему типу перед вызовом ItemArray[0]. Быстрый и грязный способ сделать это ...

tab.Text = ((QuesType)ds.Tables[0].Rows[0]["QuesType"]).ItemArray[0]; 

Однако более надежное и менее подверженными ошибкам решения будет ...

if (ds.Tables.Count > 0) 
{ 
    var table = ds.Tables[0]; 
    var columnName = "QuesType"; 
    if (table.Rows.Count > 0 && table.Columns.Contains(columnName)) 
    { 
     var tableRow = table.Rows[0]; 
     var quesType = tableRow.Field<QuesType>(columnName); 
     if (quesType != null && quesType.ItemArray.Count() > 0) 
     { 
      tab.Text = quesType.ItemArray[0]; 
     } 
    } 
} 

Я надеюсь, что помогает!

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