2016-09-08 55 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