簡體   English   中英

asp.net驗證導致gridview selectedindexchanged問題

[英]asp.net validation causing issue with gridview selectedindexchanged

我有一個基本的應用程序,其中包含帶有sqldatasource的gridview。 數據源包含兩個日期參數。 這些參數鏈接到兩個文本框,這些文本框已預先填充,但用戶可以針對其所需的日期范圍進行修改。 每個文本框上都有兩個驗證控件。 一個requiredfieldvalidator和comparefieldvalidator。 后者是對有效日期格式的檢查。

當我(有意地)打破其中一個日期時,例如,通過添加一個字母,例如19/03 / 2014a(我在英國,日期格式為dd / mm / yy),驗證會完美啟動並返回一條消息說日期無效。

問題:

現在,在這一點上,如果我立即在gridview上選擇一行,則該應用程序出軌,並出現錯誤:“從字符串轉換日期時間時轉換失敗”,這是可以預期的,因為我正在使用文本框中的日期作為我的參數gridview數據源,其中之一現在包含無效日期。 為了完全阻止SelectedIndexChanged觸發,我嘗試處理gridview的SelectedIndexChanging事件並取消選擇的行。 這是該代碼:

protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
{
    Page.Validate();
    if (!Page.IsValid)
    {
        e.Cancel = true;
        return;
    }
}

此代碼“有效”的原因在於,它防止了SelectedIndexChanged事件以及GridView數據綁定BUT,但我仍然遇到相同的錯誤:“從字符串轉換日期時間時轉換失敗”。

有人可以幫我嗎?

一如既往地幫助您!

親切的問候

保羅

編輯:好吧,我嘗試了一個正則表達式的建議。 我刪除了其他驗證器(都需要並進行比較),出現相同的錯誤。 沒變。

我不明白的是,當我取消“ GridView1_SelectedIndexChanging”中的gridview選擇的索引更改事件並且“ GridView1_SelectedIndexChanged”沒有觸發時,我希望然后頁面將保持不變。 但是它完全脫軌並帶來錯誤。 為什么?! 我要取消動作!

當我在代碼中逐步輸入無效日期時,可以看到gridview不在此處進行數據綁定。 反正有可能嘗試DataBind()嗎?

幫助極大的贊賞!

問候保羅

編輯:我終於解決了這個問題。 我禁用了自動數據綁定,並在適當的時候自己調用了DataBind()。 我想到的另一種措施是在T-SQL中添加驗證登錄,以便無效日期不會導致查詢數據庫。 可能會有更好的解決方案,但我找不到它,也沒有人建議。

刪除了必填字段驗證器,並使用了正則表達式驗證器,您可以在其中指定日期的正則表達式並對其進行驗證。

現在使用必填字段驗證程序,由於文本框具有值,因此不觸發驗證,但不檢查文本框是否具有有效日期。

請參閱正則表達式以驗證日期格式dd / mm / yyyy

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM