5

ObjectDataSourceでFormViewを使用し、<%#Bind( "WhateverProp")%>を使用してバインドしています。すべてのnull許容列は、そのタイプのデフォルト値で返されます。

他のバインディングコンテナのように、FormViewオブジェクトにはConvertEmtpyStringToNullプロパティがないようです。これがVS2005/ .Net 2.0のバグであることを示唆する記事を見つけましたが、解決策が何であるかについては何も述べていません。

ODS_Insertingイベントのすべてのフィールドを再キャプチャすることなく、これを回避する方法について誰かが提案を持っていますか?nullをテストするためだけに、フォーム上のすべてのバインドされたフィールドを再バインドするコードを記述する必要はありません。

4

4 に答える 4

6

それにも苦労しました。ドロップダウンリストの場合、次のようにします。

AppendDataBoundItems="true"


<asp:ListItem Text="" Value=""></asp:ListItem>

私の ObjectDataSource の場合、私の UpdateMethod はエンティティという単一のパラメーターを受け取りますが、エンティティの Nullable フィールドごとに更新パラメーターを追加し、NULL に変換します。

<UpdateParameters>
    <asp:Parameter Name="No_Empl_Ferme" Type="Int32" ConvertEmptyStringToNull="true" />
</UpdateParameters>

インサートについても同じことをします。

正常に動作します。

于 2009-09-25T19:42:04.910 に答える
2

私は最終的にこれを行いました-一種の散弾銃のアプローチですが、この場合、空の文字列値はすべてnullにする必要がありますコードで文字列配列を使用して、どの値を null にするかを指定することも検討しました。その後、すべての値ではなく、文字列配列をループすることができます。

protected void RequestItemFormView_ItemInserting(object sender, FormViewInsertEventArgs e)
{
    for (int i = 0; i < e.Values.Count - 1; i++)
    {
        if (e.Values[i].ToString() == string.Empty)
        {
            e.Values[i] = null;
        }
    }
}
于 2009-04-16T13:37:49.813 に答える
1

Object DataSource では、属性 ConvertEmtpyStringToNull="True" を使用して、null 許容型ごとに InsertParameters を追加する必要があります。

<InsertParameters>
   <asp:Parameter Name="NullableFieldName" Type="Int32" ConvertEmptyStringToNull="true"  />            
</InsertParameters>
于 2009-04-24T15:34:09.567 に答える
1

引用: トニオ - 私は個々のパラメーターを使用していませんが、代わりに DataObjectTypeName を使用しています。私の挿入メソッドは単一のパラメーターを受け取ります。これは、データベースに保存したいビジネス オブジェクトです。– Scott Ivey 5 月 1 日 12:57

私はこのように修正しました:

 protected void FormViewSettings_ItemUpdating(object sender, FormViewUpdateEventArgs e)
  {
     OrderedDictionary values = e.NewValues as OrderedDictionary;

     var personID = values["PersonID"];

     if (string.IsNullOrEmpty(personID.ToString()))
     {
        values.Remove("PersonID");
        values.Add("PersonID", null);
     }
  }

少しハックですが、うまく機能します。このようにして、ConvertEmptyStringToNull 設定を使用せずに、オブジェクト プロパティを string.empty ではなく null に設定できます。

于 2010-02-02T12:29:32.533 に答える