Tip/Trick ASP.NET 2.0: DropDownList DataBind
3779 ワード
に質問
DropDowListで参照データを入力する場合、例えば製品情報を入力する場合、製品カテゴリを選択します.通常、製品カテゴリもデータベースからバインドされているはずです.2つの質問があります.は、データソースに空の値が存在しないため、DropDownListに空の値、すなわちValueが空の文字列のListItemを入れるのにどのように便利か. 製品情報を編集するときに、その製品情報のカテゴリ情報が削除された場合、DropDownListのItemsセットにSelectedValueの値を持つItemが存在しないため、ビューバインドデータを編集するときにDropDownListがエラーを報告する.実はこれはデータの一致性の問題です.
やり方
問題解決1 DropDownListのAppendDataBoundItems属性を利用する必要があり、この属性はASP.NET 1.xはないようなので、2.0の中でずっと気づかなかったが、一日で偶然発見された.名前の通り、この属性の役割は、バインドによって生成されたItemsを既存のItemsの後ろに付加することです.では、問題1を解決するには、
......Other Template.........
DropDownList拡張:
public class DropDownList : System.Web.UI.WebControls.DropDownList
{
DropDowListで参照データを入力する場合、例えば製品情報を入力する場合、製品カテゴリを選択します.通常、製品カテゴリもデータベースからバインドされているはずです.2つの質問があります.
やり方
問題解決1 DropDownListのAppendDataBoundItems属性を利用する必要があり、この属性はASP.NET 1.xはないようなので、2.0の中でずっと気づかなかったが、一日で偶然発見された.名前の通り、この属性の役割は、バインドによって生成されたItemsを既存のItemsの後ろに付加することです.では、問題1を解決するには、
| |
| |
DropDownList拡張:
public class DropDownList : System.Web.UI.WebControls.DropDownList
{
///
/// kill the exception. the exception was raised because the selectedvalue does not exist in the list items,
/// we do not hope the control throws a "selectedvalue not exist..." exception
///
///
protected override void PerformDataBinding(System.Collections.IEnumerable dataSource)
{
try
{
base.PerformDataBinding(dataSource);
}
catch (ArgumentOutOfRangeException ex)
{
ArgumentOutOfRangeException o = ex;
}
}
}