2011-07-07 85 views
0

我有一個日曆,我可以使用日期呈現事件在單元格內添加文本框,但我想要做的是允許用戶添加數據該文本框,然後按添加和內容將被添加到數據庫,並顯示出相同的文本框裏面:如何將日曆單元格內的數據插入到數據庫中

這裏是我做過什麼:

protected void Page_Load(object sender, EventArgs e) 
{ 
    Calendar1.SelectedDate = DateTime.Now; 
} 

protected void update(object sender, DayRenderEventArgs e) 
{ 
    TextBox tb = new TextBox(); 
    Button1.click += new EventHandler(insert); 

    e.Cell.Controls.Add(Button1); 
    e.Cell.Controls.Add(textBox2); 
} 

protected void insert(object sender, EventArgs e) 
{ 

} 

,我知道如何插入數據但我失去了如何識別它並將其輸出回同一個文本框

謝謝

+0

有一個內置的AJAX控件的int AJAX控件工具箱要做到這一點,供參考:http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/Calendar/Calendar.aspx –

回答

0

嗯,我不知道你是根據你的問題失去了什麼零件,所以未能提供一個完整的工作示例的我會打一些要點:

1)識別數據你正在插入,附加一個日期(和時間,如果適用)的記錄​​。 (編輯:你是否正在尋找一種機制來完成這項工作?如果是這樣,請發佈當前的DayRender處理程序代碼和Calendar標記)。

2)要在日曆填充單獨日數據,使用Calendar.VisibleDate(過濾DB結果)在一個Page.Load處理程序加載隨天的數據的數據結構(如List<T>)整月。然後在Calendar.DayRender處理程序中,將結構中的適當記錄添加到e.Cell

3)爲了讓新的結果在插入後的第一頁上顯示出來,你應該能夠在插入後使用Response.Redirect到當前頁面。這將導致頁面生成過程重新啓動,但您將失去ViewState。


編輯:這是我試圖在上面描述的基本原型。請注意,您可以預取任何可枚舉的數據類型,我在這裏使用List<T>

//Page code-behind 
public partial class Default2 : System.Web.UI.Page 
{ 
    List<DataObject> liCurrentMonth = new List<DataObject>(); 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     liCurrentMonth = DataObject.GetCurrentMonth(Calendar1.VisibleDate); 
    } 

    protected void Calendar1_DayRender(object sender, DayRenderEventArgs e) 
    { 
     foreach (DataObject item in liCurrentMonth) 
     { 
      if (item.date == e.Day.Date) 
      { 
       Literal lit = new Literal(); 
       lit.Text = item.text; 
       e.Cell.Controls.Add(lit); 
      } 
     } 
    } 
} 

//Data layer object 
public class DataObject 
{ 
    public DateTime date { get; set; } 
    public string text { get; set; } 

    public static List<DataObject> GetCurrentMonth(DateTime currentdate) 
    { 
     //Get items from the db here, based on currentdate parameter 
     //and populate the List<DataObject>. 
     return new List<DataObject>(); 
    } 
} 
+0

但每一個細胞有一個文本框我如何插入日期爲這個文本框存在的單元格,如果我不能使用'SelectedDate' – Wahtever

+0

是的,我看到這是一個問題。 AndyPeacock的觀點非常真實,問題在於事件掛鉤甚至不起作用,因爲viewstate不支持在viewstate建立後動態呈現的文本框。我不知道我是否對你有答案。 – pseudocoder

+0

我可以添加一個文本框與日曆,以便用戶在文本框中插入一些文本,然後從日曆選擇日期和所有插入數據庫(我可以這樣做)。但我如何輸出數據庫中的文本到相應的日期 – Wahtever

0

我不確定你會得到這個工作。它的頁面視圖狀態記住輸入到文本框等的值。Viewstate在頁面呈現之前被創建。日曆DayRender事件在日曆渲染期間被調用,因此在viewstate完成它的事情之後。因此viewstate機制不知道文本框的存在,所以不會跟蹤它們的內容。

也許您可以根據月份和日期編號爲每個文本框分配一個ID,在回發後您可以在Request.Form集合中檢查此控件ID並對數據執行某些操作?

相關問題