格式异常抛出 [英] format exception thrown
本文介绍了格式异常抛出的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有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屋!
查看全文