我有嵌套的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)?
答案 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;