2010-12-13 32 views
1

propriété text Réglage des onglets comme suit:Reliure une seule colonne

Dans le code ci-dessous, GetQuesType() retourne une QuesType complète nommée table pour les onglets générés par le code ci-dessous sont comme égal au pas. des enregistrements dans le tableau. Ce que je veux, c'est que seule la colonne QuesType soit liée aux onglets. Que devrais-je changer dans mon code?

page 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>** 

J'ai suivi cet exemple:

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

{EDIT}

modifié la méthode comme suit:

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); 
     } 
    } 

Maintenant, il dit: Le match de la meilleure méthode surchargée pour « System.Data.DataRowCollection.this [int] » a des arguments invalides

Comment dois-je lier les onglets avec colonne QuesType?

ok, il aurait dû être ceci:

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

Maintenant son erreur donnant sur itemArray

'objet' ne contient pas une définition pour 'ItemArray' et aucune méthode d'extension 'ItemArray' acceptation un premier argument de type 'object' peut être trouvé (manque-t-il une directive using ou une référence d'assembly?)

+0

Vous devez probablement renommer le titre en quelque chose comme "Erreur lors du référencement des membres d'un objet dans la DataColumn d'un DataRow". Cette question n'a vraiment rien à voir avec la liaison de données. Sur une note positive, vous avez fourni une description très détaillée de votre problème. Bravo! Double-bravo pour l'utilisation des composants Telerik! :) –

Répondre

1

Le type par défaut renvoyé par une ligne la colonne est Object. Vous devez jeter la colonne retournée par cette déclaration ...

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

... au type approprié avant d'appeler ItemArray[0]. Un moyen rapide et sale pour le faire est ...

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

Cependant, une plus robuste et moins sujette aux erreurs solution serait ...

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]; 
     } 
    } 
} 

J'espère que ça aide!