格式异常抛出 [英] format exception thrown

查看:81
本文介绍了格式异常抛出的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有gridview,它是根据我在文本框中提供的日期范围加载的。它可以处理罚款,但是当我输入数据库中没有记录的数据范围时,它会抛出FORMAT EXCEPTION ERROR。它在我已将Checkbox绑定到数据库列的行上引发错误。 

代码:

< asp:GridView ID = GridViewSmsComplaints AllowPaging = True PageSize = 4 runat = server AutoGenerateColumns = CssClass = mGrid < span class =code-attribute> BorderColor = #333333 宽度 = 550px OnPageIndexChanging = GridViewSmsComplaints_PageIndexChanging >
< >
< asp:BoundField HeaderText = ID DataField = < span class =code-keyword> ID / >
< asp:BoundField HeaderText = 接收日期 DataField = RecievingDate / < span class =code-keyword>>
<% - < asp:BoundField HeaderText = ToMobileNo DataField = ToMobileNo /> - %>
< asp :BoundField HeaderText = FromMobileNo DataField = FromMobileNo / >
< asp:BoundField HeaderText = 消息 DataField = 消息 >
< ItemStyle Wrap = True / >
< / asp:BoundField >
< asp:TemplateField HeaderText = IsComplaint >
< ItemTemplate >
< asp:CheckBox ID = ckboxIsComplaint runat = server 已检查 < span class =code-keyword> ='
<%#Convert.ToBoolean(Eval(< span class =code-string> IsComplaint)。ToString())%> ' / >
< / ItemTemplate >
< ; / asp:TemplateField >
< /列 >
< / asp:GridView >

SP:

ALTER PROCEDURE [dbo]。[SearchSmsComplaintsByDate_SP]

@DateFrom Datetime = null,
@DateTo DateTime = null

AS
BEGIN
开始尝试
IF(@DateFrom为空且@DateTo为空)
开始
设置@DateFrom =转换(日期,(从ReceivedMessages中选择min(ReceivedMessages.ReceivedDateTime)))
设置@DateTo =转换(日期,(从ReceivedMessages中选择max(ReceivedMessages.ReceivedDateTime)))

SELECT [ID]
,REPLACE(convert(varchar,ReceivedMessages.ReceivedDateTime,106),'','/')作为RecievingDate
,[FromMobileNo]
,[Message],
[IsComplaint]
FROM [CmsSMSDb]。[dbo]。[ReceivedMessages]
其中Convert(date,ReceivedDateTime)> = @DateFrom AND Convert(date,ReceivedDateTime)< = @ DateTo

<小号pan class =code-attribute> AND IsComplaint! = 1



结束

其他 IF(@DateFrom null AND < span class =code-attribute> @ DateTo null)

开始

SELECT [ID]

,REPLACE(convert(varchar, ReceivedMessages.ReceivedDateTime, 106), ' ','/') as RecievingDate

,[FromMobileNo]

,[Mes sage]

,[IsComplaint]

F ROM [CmsSMSDb]。[dbo]。[ReceivedMessages]

其中 < span class =code-attribute> Convert(date,ReceivedDateTime)
> = @DateFrom AND Convert(date,ReceivedDateTime)< = @ DateTo

AND IsComplaint! = 1

结束

结束 尝试

开始 Catch

选择 ERROR_MESSAGE() as ErrorMsg

结束 Catch



END

解决方案

尝试使用

 <   asp:CheckBox     ID   =  ckboxIsComplaint   < span class =code-attribute>   runat   =  server   已检查  ='  <% #Eval(  IsComplaint)== DBNull.Value?  false :Convert.ToBoolean(Eval(  IsComplaint))%>'    /  >  


I have gridview which is loaded on basis of date range that i provide in textboxes. It work fines but it throws FORMAT EXCEPTION ERROR when i ENter data range for which no record exists in Database. it Throws error on line where i have binded Checkbox to database column.

Code:

     <asp:GridView ID="GridViewSmsComplaints" AllowPaging="True" PageSize="4" runat="server" AutoGenerateColumns="False" CssClass="mGrid" BorderColor="#333333"  Width="550px" OnPageIndexChanging="GridViewSmsComplaints_PageIndexChanging" >
                   <Columns>
                    <asp:BoundField HeaderText="ID" DataField="ID" />
                    <asp:BoundField HeaderText="Recieving Date" DataField="RecievingDate" />
                    <%--<asp:BoundField HeaderText="ToMobileNo" DataField="ToMobileNo" />  --%>
                    <asp:BoundField HeaderText="FromMobileNo" DataField="FromMobileNo" />
                    <asp:BoundField HeaderText="Message" DataField="Message" >
                       <ItemStyle Wrap="True" />
                       </asp:BoundField>
                    <asp:TemplateField HeaderText="IsComplaint">
                     <ItemTemplate>
                      <asp:CheckBox ID="ckboxIsComplaint"  runat="server" Checked='<%# Convert.ToBoolean(Eval("IsComplaint").ToString()) %>' />
                     </ItemTemplate>
                    </asp:TemplateField>
                   </Columns>
                </asp:GridView>

SP:

    ALTER PROCEDURE [dbo].[SearchSmsComplaintsByDate_SP]

        @DateFrom Datetime = null ,
        @DateTo DateTime = null

    AS
    BEGIN
        Begin Try
        IF(@DateFrom is null AND @DateTo is null)
        Begin
          Set @DateFrom = Convert(date,(Select min(ReceivedMessages.ReceivedDateTime) from ReceivedMessages))
          Set @DateTo = Convert(date,(Select max(ReceivedMessages.ReceivedDateTime) from ReceivedMessages))

          SELECT [ID]
          ,REPLACE(convert(varchar, ReceivedMessages.ReceivedDateTime, 106), ' ','/') as RecievingDate
          ,[FromMobileNo]
          ,[Message],
           [IsComplaint]
          FROM [CmsSMSDb].[dbo].[ReceivedMessages]
          where Convert(date,ReceivedDateTime)>= @DateFrom AND Convert(date,ReceivedDateTime)<= @DateTo

          AND IsComplaint!=1



        End

        Else IF(@DateFrom is not null AND @DateTo is not null)

        Begin

           SELECT [ID]

          ,REPLACE(convert(varchar, ReceivedMessages.ReceivedDateTime, 106), ' ','/') as RecievingDate

          ,[FromMobileNo]

          ,[Message]

          ,[IsComplaint]

          FROM [CmsSMSDb].[dbo].[ReceivedMessages]

          where Convert(date,ReceivedDateTime)>= @DateFrom AND Convert(date,ReceivedDateTime)<= @DateTo

          AND IsComplaint!=1

        End

        End Try

        Begin Catch

         Select ERROR_MESSAGE() as ErrorMsg

        End Catch



    END

解决方案

try with

<asp:CheckBox ID="ckboxIsComplaint"  runat="server" Checked='<%# Eval("IsComplaint") == DBNull.Value ? false : Convert.ToBoolean(Eval("IsComplaint")) %>' />


这篇关于格式异常抛出的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆