2016-09-08 54 views
1

在报告页面,我有下拉列表,日期选择器没有fromdate和todate和按钮 所以,当我选择的这条线从下拉列表,日期选择器,然后这个节目错误无效的情况下例外

dt=report(Convert.ToDateTime(fromdate), Convert.ToDateTime(todate), Convert.ToString(DropDownList1.SelectedValue)); 

错误

An exception of type 'System.InvalidCastException' occurred in mscorlib.dll but was not handled in user code 

Additional information: Unable to cast object of type 'System.Web.UI.HtmlControls.HtmlInputText' to type 'System.IConvertible' 

代码

protected void Button1_Click(object sender, EventArgs e) 
    { 

     dt=report(Convert.ToDateTime(fromdate), Convert.ToDateTime(todate), Convert.ToString(DropDownList1.SelectedValue)); 
     GridView1.DataSource = dt; 
     GridView1.DataBind(); 
    } 
    DataTable dt = new DataTable(); 
    public DataTable report(DateTime fromdate,DateTime todate,string IMEI) 
    { 

    DateTime fromdatee = Convert.ToDateTime(Request.Form["fromdate"]); 
     DateTime todatee = Convert.ToDateTime(Request.Form["todate"]); 

     Entities track = new Entities(); 

     DateTime fr_date = new DateTime(fromdatee.Year, fromdatee.Month, fromdatee.Day, 0, 0, 0); 
     DateTime t_date = new DateTime(todatee.Year, todatee.Month, todatee.Day, 23, 59, 59); 

     List<spGetReport_Result> report = track.spGetReport(IMEI,fr_date,t_date).ToList(); 
     dt.Columns.Add("Time",typeof(DateTime)); 
     dt.Columns.Add("X",typeof(float)); 
     dt.Columns.Add("valuenumber",typeof(int)); 

     foreach(var c in report) 
     { 
      dt.Rows.Add(c.Time, c.X, c.valuenumber); 
     } 
     return dt; 

    } 

HTML

 <form id="form1" runat="server"> 
    <div> 
     <span> 
      <asp:DropDownList ID="DropDownList1" runat="server"></asp:DropDownList> 
     </span> 
     <span> 
     <input id="fromdate" runat="server" clientidmode="static" /> 
     </span> 
     <span> 
    <input id="todate" runat="server" clientidmode="static" /> 

     </span> 
     <span> 
      <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /> 
     </span><br /> 


       <asp:Label ID="Label1" style="margin-left: 220px;" runat="server" Text="Export to"></asp:Label> 
        <asp:GridView ID="GridView1" runat="server" class="display nowrap" 
     Width="100%" CellPadding="0" 
     Font-Names="Verdana" BackColor ="White" BorderColor="#CCCCCC" BorderStyle="None" 
     BorderWidth="1px" Font-Size="9pt"> 
    <FooterStyle BackColor="White" ForeColor="#000066" /> 
    <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" /> 
    <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" /> 
    <RowStyle ForeColor="#000066" /> 
    <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" /> 
    <SortedAscendingCellStyle BackColor="#F1F1F1" /> 
    <SortedAscendingHeaderStyle BackColor="#007DBB" /> 
    <SortedDescendingCellStyle BackColor="#CAC9C9" /> 
    <SortedDescendingHeaderStyle BackColor="#00547E" /> 
</asp:GridView> 
    </div> 
    </form> 

回答

0

由于要发送的Convert.ToDateTime HTML 控制代替要转换的字符串。

你应该这样做:

dt = report(Convert.ToDateTime(fromdate.Value), Convert.ToDateTime(todate.Value), DropDownList1.SelectedValue); 

一个非常简单的调试过程必须迅速表明你是哪里的问题了。

DropDownList1.SelectedValue已经是一个字符串,所以在转换它时没有意义。

无论如何,你应该首先检查那些输入中的内容是否真的有效DateTime通过使用验证器表示。

+0

哦......现在我明白了错误的编码器有多愚蠢:O:P – user6628729