仅绑定一列

时间:2010-12-13 10:54:48

标签: c# asp.net telerik

设置Tabs的文本属性如下:

在下面的代码中,GetQuesType()返回一个名为Table的完整QuesType,因此下面代码生成的Tabs类似于no。表中的记录。 我想要的是只有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

{编辑}

修改方法如下:

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上给出了错误

  

'object'不包含'ItemArray'的定义,也没有扩展方法'ItemArray'接受类型'object'的第一个参数(你是否缺少using指令或汇编引用?)

1 个答案:

答案 0 :(得分: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];
        }
    }
}

我希望有所帮助!