![](/img/trans.png)
[英]Insert values of dynamically created textboxes into sqlserver and display in gridview
[英]gridview update with dynamically created textboxes
我有綁定到sql數據源的gridview。
在RowBound方法中,我具有以下代碼以便格式化可編輯的文本框:
protected void gridview_RowDataBound(Object sender, GridViewRowEventArgs e)
{
//Format the Edit row.
if (e.Row.RowIndex == gridview.EditIndex && e.Row.RowIndex >= 0)
{
//Add Ajax Calendar to Date fields
TextBox startDate= ((TextBox)e.Row.Cells[7].Controls[0]);
startDate.ID = "txtStartDate";
TextBox endDate= ((TextBox)e.Row.Cells[8].Controls[0]);
endDate.ID = "txtEndDate";
startDate.Attributes.Add("onchange", "javascript:GridviewAutoCalculateEndDate(this, " + endDate.ClientID + ");");
AjaxControlToolkit.CalendarExtender startDateCalendar = new AjaxControlToolkit.CalendarExtender();
startDateCalendar .ID = "startDateCalendar ";
startDateCalendar .TargetControlID = "txtStartDate";
startDateCalendar .Format = "dd/MM/yyyy";
AjaxControlToolkit.CalendarExtender endDateCalendar = new AjaxControlToolkit.CalendarExtender();
endDateCalendar.ID = "endDateCalendar";
endDateCalendar .TargetControlID = "txtEndDate";
endDateCalendar .Format = "dd/MM/yyyy";
e.Row.Cells[7].Controls.Add(startDate);
e.Row.Cells[8].Controls.Add(endDate);
e.Row.Cells[7].Controls.Add(startDateCalendar );
e.Row.Cells[8].Controls.Add(endDateCalendar );
}
}
上面只是將動態AjaxCalendarExtender添加到兩個文本框和javascript中,采用在startDate文本框中輸入的日期,對其添加了一年並在endDate文本框中進行了更新(因此您不必手動更改)。
我遇到的問題是,當我單擊“更新”命令字段時,我獲得了對這兩個文本框的空引用,並且其中的文本也清除了(與回發有關嗎?)
這是更新代碼:
protected void gridview_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
DateTime startDate= new DateTime();
DateTime.TryParseExact(e.NewValues[6].ToString(), "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal, out startDate);
DateTime endDate= new DateTime();
DateTime.TryParseExact(e.NewValues[7].ToString(), "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal, out endDate);
dataContext.UpdateDates(startDate, endDate);
PerformDataBind();
}
基本上,startDate和endDate似乎在單擊Update之后立即清除並變為null。 e.NewValues似乎沒有拉日期字段。 如果我要刪除動態數據,它們會更新就好了。
我想念什么?
變量名稱“ startDate”和“ endDate”僅存在於if語句中,如果您想使用該名稱來對它們進行定義,請在更高的范圍內進行定義
每次加載頁面時,都必須創建動態創建的控件。 當您按下“更新”按鈕時,將發生“回發”,並且在該“回發”中,您必須重新創建動態控件才能訪問它們。
意思是,如果正在發生RowUpdating
,並且您之前沒有經過RowDataBound
,則控件不存在。
我還假定在Updating
PostBack期間, gridview.EditIndex
將具有不同的值,因此您的控件在任何情況下都不會存在。
您應該在標記中設計編輯模式模板,並讓ASP.NET處理控件的創建。 利用數據綁定功能,讓他們為您完成工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.