チェックボックス リストを作成し、jquery を使用して結果をクライアントにフィルター処理する目的で、コードで変更しています。
このコードは、データバインド イベントで実行されます。
foreach (ListItem item in checkBoxList.Items)
{
foreach (object dataItem in sdsOutsideReports.Select(DataSourceSelectArguments.Empty))
{
if (Convert.ToInt16(DataBinder.GetPropertyValue(dataItem, "AttributeID")) == Convert.ToInt16(item.Value))
{
item.Attributes.Add("Requirement"
, DataBinder.GetPropertyValue(dataItem, "AttributeDataType").ToString()
);
}
}
}
残念ながら、結果はスパンでラップされたチェックボックスリストになります。そのスパンには、記入される「要件」の属性があります。とにかく、それは .net のやり方のようです:
<span requirement="TypeRequirement">
<input id="ctl00_ContentPlaceHolder1_cblPrerequisites_11" type="checkbox" name="ctl00$ContentPlaceHolder1$cblPrerequisites$11">
<label for="ctl00_ContentPlaceHolder1_cblPrerequisites_11">Final Exam</label>
</span>
しかし、ポストバックのチェックボックスの属性コレクションにアクセスして、特定のアイテムを他のアイテムとは異なる方法で操作しようとすると、属性が得られません!
このコードは null 参照で失敗します。
String Test;
foreach (ListItem SelectedItem in checkBoxList.Items)
{
if (SelectedItem.Selected) {
Test = SelectedItem.Attributes["requirement"].ToString();
}
}
プロパティ インスペクションを実行しましたが、このチェックボックス リストに関連する属性はありません。
この奇妙さを修正するためのオプションは何ですか?