2013-03-20 69 views
0

我在ASP.NET gridview中有一列以這種格式(dd/mm/yyyy 00:00:00)在頁面加載時顯示日期值。這被綁定到一個聲明爲「日期」類型的列的SQL表。從ASP.NET GridView插入數據時間值到SQL Server Datatable

在頁腳模板中,有一個「插入」按鈕以及gridview的各個列中的文本框。在單擊該按鈕時,新記錄應該插入到SQL服務器Datatable中。

但是,出現調試錯誤,並顯示錯誤消息: SQLException未由用戶代碼處理。當從字符串

這裏轉換日期和/或時間是此方法的代碼 轉換失敗:

protected void insertRowToDOitems(object sender, GridViewCommandEventArgs e) 
    { 
     if (e.CommandName == "Add") 
     { 
      string strDO_no = ((TextBox)GridView1.FooterRow.FindControl("txtdo_no")).Text; 
      string strDO_item_no = ((TextBox)GridView1.FooterRow.FindControl("txtdo_item_no")).Text; 
      string strMaterial = ((TextBox)GridView1.FooterRow.FindControl("txtmaterial")).Text; 
      string strDeliveryQty = ((TextBox)GridView1.FooterRow.FindControl("txtdelivery_qty")).Text; 
      string strSO_no = ((TextBox)GridView1.FooterRow.FindControl("txtso_no")).Text; 
      string strSOItem_no = ((TextBox)GridView1.FooterRow.FindControl("txtso_item_no")).Text; 
      string strUOM = ((TextBox)GridView1.FooterRow.FindControl("txtuom")).Text; 
      string strDeliveryDate = ((TextBox)GridView1.FooterRow.FindControl("txtDelivery_date")).Text; 

      //SQLDataSource parameters 
      DOitem.InsertParameters.Clear(); 
      DOitem.InsertParameters.Add("do_no", strDO_no); 
      DOitem.InsertParameters.Add("do_item_no", strDO_item_no); 
      DOitem.InsertParameters.Add("material", strMaterial); 
      DOitem.InsertParameters.Add("delivery_qty", strDeliveryQty); 
      DOitem.InsertParameters.Add("so_no", strSO_no); 
      DOitem.InsertParameters.Add("so_item_no", strSOItem_no); 
      DOitem.InsertParameters.Add("uom", strUOM); 
      DOitem.InsertParameters.Add("delivery_date", strDeliveryDate); 

      DOitem.Insert(); 
     } 
    } 

這種方法是從GridView的標籤叫:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
        DataKeyNames="do_no,do_item_no" DataSourceID="DOitem" CellPadding="4" 
        GridLines="None" 
        AllowSorting="True" ShowFooter="True" style="margin-top: 1px" 
        ForeColor="#333333" Height="58px" Width="546px" OnRowCommand="insertRowToDOitems"> 

如果錯誤是由於日期格式或類型的差異造成的,那麼如何解決?

另外,如何顯示從gridview中的SQL表中檢索到的日期(「dd/MM/yyyy」)?我試過以下,但它不工作:

<EditItemTemplate> 
          <asp:TextBox ID="txtDelivery_date" runat="server" 
             Text='<%#Bind("delivery_date", "{0:dd/MM/yyyy}") %>'> 
          </asp:TextBox> 
         </EditItemTemplate> 

回答

0

是的,它可能是一個日期格式問題,如果您使用的是英國時間格式的前端和SQL Server可能給予例如插入錯誤使用美國日期格式。我一直堅持的日期字符串在ISO通用格式的代碼,以避免這些問題,所以我會改變這一行:

DOitem.InsertParameters.Add("delivery_date", strDeliveryDate); 

這個

DOitem.InsertParameters.Add("delivery_date", DateTime.Parse(strDeliveryDate).ToString("s")); 

的「S」轉換的時間爲格式是這樣的:2013-03-12T21:15:07

對不起,我不明白EditTemplate中的問題,該代碼看起來對我來說還可以。