我有一個基本的應用程序,其中包含一個sqldatasource gridview。數據源包含兩個日期參數。參數鏈接到兩個預填充的文本框,但可以由用戶修改其期望的日期範圍。每個文本框上有兩個驗證控件。 requiredfieldvalidator和comparefieldvalidator。後者是對有效日期格式的檢查。當我(故意)中斷其中一個日期時,比如說,通過添加一封信例如19/03/2014a(我在英國,日期格式是dd/mm/yy)它會返回一條消息來表示日期無效。asp.net驗證導致gridview問題selectedindexchanged
問題:
現在,在這一點上,如果我立即選擇在GridView上一排,應用出軌,我得到一個錯誤:「轉換失敗時從字符串轉換日期時間」這給預計我我使用文本框中的日期作爲gridview數據源的參數,其中一個現在包含無效日期。爲了防止SelectedIndexChanged觸發,我試圖處理GridView的SelectedIndexChanging事件並取消行選擇。下面是該代碼:
protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
{
Page.Validate();
if (!Page.IsValid)
{
e.Cancel = true;
return;
}
}
這碼「作品」,因爲它可以防止SelectedIndexChanged事件,也GridView的數據綁定,但是,我仍然得到了同樣的錯誤:「轉換從字符串轉換日期時間時失敗」。
有人可以幫助我嗎?
幫助非常感謝,永遠!
親切的問候
保羅。
編輯:嗯,我試過正則表達式的建議。我刪除了其他驗證器(包括必需的和比較)出現相同的錯誤。不用找了。
我不明白的是,當我在「GridView1_SelectedIndexChanging」中取消gridview選中的索引更改事件並且「GridView1_SelectedIndexChanged」未觸發時,我期望那個頁面將被返回不變。但它完全出軌並帶來了錯誤。爲什麼?!我取消了行動!
當我通過代碼輸入無效日期時,我可以看到gridview不是在那裏綁定數據。它可能試圖DataBind()嗎?
幫助大大讚賞!
問候 保羅
編輯:我終於解決了這個自己。我禁用了自動數據綁定,並在適當的時候自己調用了DataBind()。我想到的另一個措施是在T-SQL中添加驗證登錄,以便無效的日期不會導致查詢數據庫。有可能有更好的解決方案,但我找不到它,也沒有人提出它。
我會嘗試你的建議,但是,不會我有CompareValidator採取日期驗證的護理: 的 –
SQLGolfer
不要比較驗證器需要有效的日期比較,這就是爲什麼它不會工作 –
對不起,你的回答沒有幫助。 – SQLGolfer