设置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指令或汇编引用?)
答案 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];
}
}
}
我希望有所帮助!