3

これまでのところ、これは私が持っているものです。

protected void CategoryRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        Object dataItem = e.Item.DataItem;

        // code to pull catid out of dataItem
    }

デバッグで実行した後の dataItem の内容の例を次に示します。

dataItem = { TextCategory = "放射線 (放出または汚染)", catid = 4, TextResult = "緊急計画を参照し、コード 332.54(A) の下で報告" , IsReportable = True }

オブジェクトから catid を引き出したい。キャストを試みましたが、キャストの試みはすべて失敗しました。私の目標は、ネストされたリピーターのデータバインドにこの catid を使用することです..次のようなものです:

using (NERAEntities entities = new NERAEntities())
{
    var Questions = (from x in entities.Questions
                   where x.CategoryID == catid
                   select new { QuestionText = x.Text }); 


    QARepeater.DataSource = Questions;
    QARepeater.DataBind();
}
4

3 に答える 3

4

問題は、DataItem 自体が実際には型を持たないことです (これは Anonymous クラスです)。代わりにこれを使用する必要があります。

dynamic dataItem = e.Item.DataItem ;
int catId = dataItem.catid ;

明らかに、実際のオブジェクトにプロパティがない場合、これは実行時に失敗しますcatId

于 2013-08-08T15:00:17.710 に答える
0

あなたが試すことができるかもしれません:

protected void CategoryRepeater_ItemDataBound(object sender, 
    RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || 
        e.Item.ItemType == ListItemType.AlternatingItem)
    {
        DataRowView row = (DataRowView)e.Item.DataItem;
        int? catID = row["catid"] as int;
    }
}
于 2013-08-08T15:14:16.077 に答える
0

使用しているオブジェクトのタイプが DataItem と呼ばれると仮定して、これを試してください。

    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        DataItem dataItem = (DataItem) e.Item.DataItem;

        // code to pull catid out of dataItem
    }
于 2013-08-08T14:57:47.020 に答える