Привязка только одного столбца - PullRequest
1 голос
/ 13 декабря 2010

Установка свойства текста вкладок следующим образом:

В приведенном ниже коде GetQuesType () возвращает полный QuesType с именем Table, поэтому вкладки, сгенерированные с помощью приведенного ниже кода, похожи на 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

{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, принимающий первый аргумент типа« объект », не найден (отсутствует директива using или ссылка на сборку?)

1 Ответ

1 голос
/ 17 декабря 2010

Тип по умолчанию, возвращаемый столбцом строки: 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];
        }
    }
}

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...