2013-01-12 25 views
0

事先道歉,可能是一個新手問題。 (asp.net新手,VB編碼,最佳控制知識)。請尊重我對AJAX控件不感興趣,或者使用MVC並儘量減少javascript。我需要做的是非常簡單的技術。使用datepicker控件的值更新數據庫ASP.NET VB

我正在開發一個表單,允許用戶編輯數據庫數據。我選擇使用FormView,以便我可以將其格式化爲傳統的vba應用程序。如果我允許VWD自動格式化控件,我可以將數據源設置爲我的數據庫表,並且數據庫中的值成功顯示。我也可以使用這種形式編輯數據庫中的所有內容。

但是,老闆不喜歡輸入日期。

我一直沒能找到一個數據源控件,它的功能類似於在formview中自動構建的文本框(帶有綁定到數據源功能)。所以,我假設沒有。我需要一些保證,我認爲我需要做的是正確的方法。

而是通過前端自動魔法的東西使用FormView控件的數據源,我應改爲

  • 地方的這些datapicker控制,僅僅與文本框結合日曆FormView控件所有日期字段一個(沒有不尊重那些誰建立他們,只是不能相信他們沒有更多的功能豐富,這似乎是必要的,讓datepickers的數量可用)
  • 聲明我的數據源在Page_Load並加載所有控件,如果他們有利用FindControl的數據
  • 使用Data_Bound塊來檢索E從使用的FindControl和建立動態SQL字符串更新
  • 申報和使用塊代碼後面的一個更新我的數據庫,也許在數據綁定

每個控制所選擇的值我在正確的軌道上?我沒有經驗可以對我的假設充滿信心。 和請,如果有更簡單的方法,我會接受它,但我必須使它「很漂亮」。 歡迎任何形式的控制建議。

---而且到我的問題 下面是一些代碼來證明我其實是試圖解決這個... 在我FormView控件的代碼塊,我有:

<asp:FormView ID="FormView1" runat="server" DataKeyNames="MASTERID_Action" 
    DataSourceID="srcAction"> 
<EditItemTemplate> 
MASTERID_Action: 
<asp:Label ID="MASTERID_ActionLabel1" runat="server" 
Text='<%# Eval("MASTERID_Action") %>' /> 
<br /> 
Action_Description: 
<asp:TextBox ID="Action_DescriptionTextBox" runat="server" 
Text='<%# Bind("Action_Description") %>' /> 
<br /> 
Action_Target: 
<asp:TextBox ID="Action_TargetTextBox" runat="server" 
Text='<%# Bind("Action_Target") %>' /> 
<br /> 
Action_Captured: 
<asp:TextBox ID="Action_CapturedTextBox" runat="server" 
Text='<%# Bind("Action_Captured") %>' /> 
<br /> 
Action_Declined: 
<asp:TextBox ID="Action_DeclinedTextBox" runat="server" 
Text='<%# Bind("Action_Declined") %>' /> 
<br /> 
Action_AgreedDate: 
<ewc:CalendarPopup ID="CalendarPopup1" runat="server" Culture="en-AU" 
PostedDate="" SelectedDate='<%# Bind("Action_AgreedDate") %>' 
SelectedValue="01/14/2013 08:47:54" UpperBoundDate="12/31/9999 23:59:59" 
VisibleDate="01/14/2013 08:47:54" /> 
<br /> 
     ... 
</EditItemTemplate> 

我的數據庫保存這Action_AgreedDate作爲可空。 當我查看ItemTemplate(在瀏覽器中)日期顯示爲0.000(因爲它的文本字段並綁定到Action_AgreedDate,沒有發生錯誤),當我點擊編輯去EditItemTemplate我得到這個錯誤: 從鍵入'DBNull'鍵入'Date'是無效的。

描述:執行當前Web請求期間發生未處理的異常。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。

異常詳細信息:System.InvalidCastException:從'DBNull'類型到'Date'類型的轉換無效。

源錯誤:

95行:
線96:Action_AgreedDate:97 行:' 99行:的SelectedValue = 「2013年1月14日8點47分54秒」 UpperBoundDate =「12/31/9999 23:59:59「

我可以很容易地將其轉換爲」控件發現空字段,並不知道如何處理它「;問題是,我不知道該怎麼做。我已經檢查過該字段的屬性(CalendarPOP字段以查看是否有處理空值的設置,但對我來說沒有什麼是顯而易見的,目前我正在嘗試在線查找有關控件的更多文檔(我已聯繫eWorld和希望他們能夠作出迴應。)

我還要補充一點,如果我請求已經有一個Action_AgreedDate我沒有得到任何差錯的記錄,因爲有存在的價值在數據庫中的控件來顯示。

回答

0

問題已解決。

我在4GuysFromRolla.com上瀏覽了關於RJS POP日曆(http://preview.tinyurl.com/cerm9xv)的文章,並勾選了所有框。成功實現它,並且,由於日曆與指定的文本框是分開的,因此它不必被綁定!它工作得非常好。 4GuysFromRolla再次保存我的培根...

0

我認爲最好的方法是使用jQueryjQuery UI,它有一個date picker,它可以附加到FormView中的常規ASP.NET文本框中,所以如果你的FormView代碼看起來像這樣例如:

<asp:FormView ID="FormView1" runat="server" DataKeyNames="id" DataSourceID="SqlDataSource1"> 
     <EditItemTemplate> 
      id: 
      <asp:Label ID="idLabel1" runat="server" Text='<%# Eval("solution_id") %>' /> 
      <br /> 
      date_modified: 
      <asp:TextBox ID="date_modifiedTextBox" runat="server" Text='<%# Bind("date_modified") %>' /> 
      <asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True" CommandName="Update" Text="Update" /> 
      <asp:LinkButton ID="UpdateCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel" /> 
     </EditItemTemplate> 
     <ItemTemplate> 
      id: 
      <asp:Label ID="idLabel" runat="server" Text='<%# Eval("solution_id") %>' /> 
      <br /> 
      date_modified: 
      <asp:Label ID="date_modifiedLabel" runat="server" Text='<%# Bind("date_modified") %>' /> 
     </ItemTemplate> 
    </asp:FormView> 

你可以使用jQuery UI獲得的DATE_MODIFIED文本框中輸入一個日期選擇器運行是這樣的:

$('[id$=date_modifiedTextBox]').datepicker() 

$('[id$=date_modifiedTextBox]')部分需要選擇使用jQuery的ASP.NET控件,如果它只是一個正常的元素,你可以使用$('.className')$('#id')或類似的東西。希望這可以幫助。

+0

我會試試這個。我實際上找到了eWorld的日曆彈出式控件,它的工作原理除非數據庫中的日期字段爲NULL。我向開發人員發送了一個筆記,詢問如何處理NULL,但尚未收到回覆。你知道JQuery datepicker是否處理空值?我在做什麼是更新記錄(所以datepicker字段確實在我的EditItemTemplate中,並且它綁定到日期)。就像我說的,我會嘗試使用這個JQuery,但是我已經瞭解了JQuery語法,$ .classname對我來說是新的。 – AAllen

+0

其實,現在我已經下載並下載了jQuery UI - 我沒有想法如何處理它?我對json一無所知......這些文件替換.dlls?毫無章法。我如何引用它,如何將控件引入我的工具箱? – AAllen