将数据表过滤为Repeater DataSource(asp.net)

时间:2016-10-14 07:42:35

标签: c# asp.net

我有嵌套的repater来分组数据。同一个表中的所有数据都有QUESTION_GROUP列。我在父级的项目数据绑定中为子转发器的父转发器传递组名。但我不能将其设置为子转发器数据源。如何从数据表中过滤转发器DataSource的多个数据?

please try this code --

  <receiver
            android:name="com.clevertap.android.sdk.InstallReferrerBroadcastReceiver"
            android:exported="true">
            <intent-filter>
                <action android:name="com.android.vending.INSTALL_REFERRER" />
            </intent-filter>
        </receiver>

        <receiver
            android:name="com.clevertap.android.sdk.GcmBroadcastReceiver"
            android:permission="com.google.android.c2dm.permission.SEND">
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
                <action android:name="com.google.android.c2dm.intent.REGISTRATION" />

                <category android:name="com.sd2labs.infinity" />
            </intent-filter>
        </receiver>

Q_Group来自父转发器。 QUESTION_GROUP是固定项(DataTable)中的一列。

  

我问,我怎样才能获得按列过滤的数据表的一部分(For Repeater Data Source)?

1 个答案:

答案 0 :(得分:1)

您可以使用Linq过滤表,然后再将其绑定到嵌套的Repeater。

rp.DataSource = FixedQuestions.AsEnumerable().Where(x => x.Field<string>("columnName") == "myValue").CopyToDataTable();

只要过滤后剩余的行,上述代码段就会起作用。否则,您将收到“源不包含DataRows”错误。 下面的代码段会在调用CopyToDataTable()之前检查是否有任何行。

        DataTable dtFiltered = new DataTable();
        var dtFilteredTemp = FixedQuestions.AsEnumerable().Where(X => X.Field<string>("columnName") == "myValue");
        if (dtFilteredTemp.AsDataView().Count > 0)
        {
            dtFiltered = dtFilteredTemp.CopyToDataTable();
        }
        rp.DataSource = dtFiltered;