2012-04-10 3 views
0

gridview에서 테이블을 편집 할 때 빈 문자열을 null로 변환하려고합니다. 나는 성공과 함께 여러 반복과 방법을 시도했다. 문제가 내 ObjectDataSource에있는 것 같지만 필요한 올바른 구문을 모릅니다. 여기 Convertemptystringtonull이 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 ="true "를 꺼내면 SQL 문이 값 (null을 보내지 않음을 의미)을 기다리고 있다고 불평합니다. 이렇게 많은 변형을 시도해 보았습니다. 클래스 라이브러리는. 어떤 도움을 주시면 감사하겠습니다!

사전에 감사!

+0

매개 변수를 설정할 때 내가 할 수있는 일이 있습니까? –

+0

나는 프로 시저의 형식을 "ByVal Distributor_Email_2 String"문자열로 설정하는 것이 나에게서 왔다고 생각합니다. 따라서 그것은 문자열이 아닌 null을 기대합니다. 이 문제를 해결할 방법이 있습니까? –

+0

이 리소스를 찾았지만 대답이 아직 없습니다. http://msdn.microsoft.com/en-us/library/ms366709.aspx –

답변

0

사용 평가를() 당신의 gridview 열을위한

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

(의 C에서 #)

<asp:GridView 
ID="grdMyDistributors" 
DataSourceID = "srcGetMyDistributors" 
CssClass="GridViewStyle" 
DataKeyNames = "ID_Distributor" 
AutoGenerateColumns = "false" 
AutoGenerateEditButton = "true" 
GridLines="None" 
runat="server" > 
<Columns> 
    <asp:TemplateField HeaderText="Seniority"> 
     <ItemTemplate> 
      <%# Eval("DistributorName") == DBNull.Value ? "" :Eval("DistributorName").ToString()%> 
     </ItemTemplate> 
    </asp:TemplateField> 
</Columns> 

+0

죄송 합니다만이 내용을 조금 더 설명해 주시겠습니까? 평가판을 가지고 놀았고 작동하지 못했습니다. –

+0

도움을 주셔서 감사하지만 불행히도 작동하지 않았습니다. Gridview에서 데이터를 표시 할 때 오류가 발생하지 않으며 빈 필드를 다시 게시하려고하면 편집 모드에서 발생합니다. 그래서 당신의 동일한 방법을 시도했지만 편집 템플릿을 사용하고 제 구문이 정확하다고 생각하지 않습니다. runat = server />

+0

또한 "DBnull"을 문자열로 지정하려고했는데 (예 : 제안하는 것과 같은) "NBNull"이 문자 그대로 데이터베이스에 나타났습니다 (단지 공백이 아니 었습니다).) –

관련 문제