Ошибка обратного вызова: недопустимо конкретное приведение

#vb.net #webforms #devexpress

#vb.net #веб-формы #devexpress

Вопрос:

Я использую форму редактирования devexpress в своем проекте Visual Basic. Я запрашиваю пользовательский ввод для a ASPxGridView , вызывается одно из значений, Start Date которое объявляется в сетке как:

 <dx:GridViewDataDateColumn Caption="Start Date" FieldName="StartDate" HeaderStyle-Wrap="true" UnboundType="String" EditFormSettings-VisibleIndex="1" >
                            <PropertiesDateEdit DisplayFormatString="D" EditFormatString="D" ValidationSettings-RequiredField-IsRequired ="true"></PropertiesDateEdit>
                            </dx:GridViewDataDateColumn>
 

И источник данных выглядит следующим образом:

 <asp:SqlDataSource ID="SqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:SpEdPortalConnectionString %>" 
        SelectCommand="ProcedureName" SelectCommandType="StoredProcedure"
        UpdateCommand="ProcedureName" UpdateCommandType="StoredProcedure"
        InsertCommand="ProcedureName" InsertCommandType="StoredProcedure">
    <SelectParameters>
        ***
    </SelectParameters>
    <UpdateParameters>
       ***
    </UpdateParameters>
    <InsertParameters>
        ***
         <asp:Parameter Name="StartDate"   Type="String" />
        ***
    </InsertParameters>
 </asp:SqlDataSource>
 

Проблема: даже если я на самом деле выбираю datevalue для StartDate, значение, вставленное в базу данных, равно null.

Примечание: ошибка обратного вызова отображается только на развернутом сервере, а не в локальной среде.Но на локальном он вставляет null, поэтому кажется, что проблема тоже есть, но она не вызывает исключения.

Ответ №1:

Я не смог найти причину, но проблема была решена путем добавления тега EditTemplate и ручной привязки значения следующим образом:

                            <dx:GridViewDataDateColumn Caption="Start Date" FieldName="StartDate"   HeaderStyle-Wrap="true" UnboundType="String" EditFormSettings-VisibleIndex="1" >
                            <PropertiesDateEdit DisplayFormatString="D" EditFormatString="D" ValidationSettings-RequiredField-IsRequired ="true"></PropertiesDateEdit>
                                <EditItemTemplate>
                                        <dx:ASPxDateEdit ID="dteSD" runat="server" ClientInstanceName="dteSD"
                                            Date='<%# Bind("StartDate") %>'>
                                        </dx:ASPxDateEdit>
                                    </EditItemTemplate>
                            </dx:GridViewDataDateColumn>
 

Если формат изменится, вы можете просто добавить Theme свойство внутри dx:ASPxDateEdit тега