2012-04-10 14 views
0

で働いていません。私はいくつかの反復と成功したメソッドを試してみました。私は、問題が私のObjectDataSourceにあると思っていますが、必要な正しい構文がわからない。ここでConvertemptystringtonullは、私は私のGridViewの中でテーブルを編集するときにnullに空の文字列を変換しようとしているのGridView

<asp:GridView 
    ID="grdMyDistributors" 
    DataSourceID = "srcGetMyDistributors" 
    CssClass="GridViewStyle" 
    DataKeyNames = "ID_Distributor" 
    AutoGenerateColumns = "false" AutoGenerateEditButton = "true" 
    GridLines="None" 
    runat="server" > 
    <Columns> 
    <asp:BoundField 
     DataField="DistributorName" 
     HeaderText="Distributor" 
     convertemptystringtonull="true" 
     ReadOnly = "True" /> 
    <asp:BoundField 
     DataField="Distributor_Email_1" 
     HeaderText="Distributor Email 1" 
     convertemptystringtonull="true" > 
     <ItemStyle BackColor="#f6f17c"/> 
    </asp:BoundField> 
    <asp:BoundField 
     DataField="Distributor_Email_2" 
     HeaderText="Distributor Email 2" 
     convertemptystringtonull="true" > 
     <ItemStyle BackColor="#f6f17c"/> 
    </asp:BoundField> 
    <asp:BoundField 
     DataField="Minimum_Purchase_Amount" 
     HeaderText="Minimum Purchase Amount" 
     dataformatstring="{0:c}" 
     convertemptystringtonull="true" > 
     <ItemStyle BackColor="#f6f17c" /> 
    </asp:BoundField> 
    </Columns> 
</asp:GridView> 

ObjectDataSourceです:

<asp:ObjectDataSource 
     ID="srcGetMyDistributors" 
     TypeName = "AAA.Distributors" 
     SelectMethod = "GetDistributorsPagingFiltered" 
     UpdateMethod = "UpdateDistributors" 
     EnableCaching="false" 
     ConvertNulltoDBNull = "true" 
     runat="server" > 
     <SelectParameters> 
      <asp:ProfileParameter Name="ID_Account" PropertyName="ID_Account" /> 
     </SelectParameters> 
     <UpdateParameters> 
      <asp:ControlParameter ControlID="grdMyDistributors" Name="ID_Distributor" PropertyName="SelectedValue" Type="Int32" /> 
     </UpdateParameters> 
    </asp:ObjectDataSource> 

ここに私の更新方法は、私はそのままのコードを実行すると、私は「オブジェクトタイプの「システムを言ってエラーが出る

Public Shared Sub UpdateDistributors(ByVal ID_Distributor As Integer, ByVal Distributor_Email_1 As String, ByVal Distributor_Email_2 As String, ByVal Minimum_Purchase_Amount As Decimal) 
     ' Initialize command 
     Dim con As New SqlConnection(_connectionString) 
     Dim cmd As New SqlCommand("UpdateDistributors", con) 
     cmd.CommandType = CommandType.StoredProcedure 
     cmd.Connection = con 

     ' Initialize parameters 
     cmd.Parameters.AddWithValue("@ID_Distributor", A2AID_Restaurant_To_Distributor) 
     cmd.Parameters.AddWithValue("@Distributor_Email_1", Distributor_Email_1) 
     cmd.Parameters.AddWithValue("@Distributor_Email_2", Distributor_Email_2) 
     cmd.Parameters.AddWithValue("@Minimum_Purchase_Amount", Minimum_Purchase_Amount) 

     ' Execute command 
     Using (con) 
      con.Open() 
      cmd.ExecuteNonQuery() 
     End Using 

    End Sub 

です.DBNull 'は' System.String '型に変換できません。 " Updateメソッドに送信しようとしているときにエラーが発生している可能性があります。私はObjectDataSourceの中から 『「ConvertNulltoDBNull =』真を取る場合は、SQL文が(それがNullを送信していないという意味)の値を期待している。私はこのように多くのバリエーションを試してみたとの任意の情報を見つけることができないと文句を言いクラスライブラリ。任意の助けいただければ幸いです!事前に

ありがとう!

+0

パラメータを設定する際に私ができることはありますか? –

+0

私はプロシージャの型を "ByVal Distributor_Email_2 As String"という文字列として設定していると思います。したがって、それは文字列を期待しており、nullではありません。これを回避する方法はありますか?私は、このリソースを見つけましたが、私は答えずに、まだだ –

+0

:http://msdn.microsoft.com/en-us/library/ms366709.aspx –

答えて

0

利用のeval()あなたのGridViewの列

<%# Eval("DistributorName") == DBNull.Value ? "" : value.ToString()%> 

(そのC#で)

012のために​​

+0

申し訳ありませんが、あなたはこのもう少し説明することができます。私は評価と一緒に遊んで、それを働かせることができませんでした –

+0

私は助けに感謝しますが、残念ながらそれは動作しませんでした。グリッドビューにデータを表示しているときにエラーが発生せず、空のフィールドをポストバックした後に編集モードでエラーが発生します。だから私はあなたの同じ方法を試みたが、テンプレートを編集し、私の構文が正しいとは思わない。 runat =サーバー/>

+0

私はまた、文字列として「DBNULL」(一種のあなたが示唆しているような)に値を設定しようとした「NBNull」は文字通り、データベースに現れた(それはちょうど空白ではなかったです) –

関連する問題