2012-09-06 71 views
1

我有被其上有代碼隱藏文件,這是設置基於在數據表中的數據的文本設置文本的文本框進行驗證的問題。問題是當我加載頁面並點擊一個按鈕時,驗證按照它應該運行,但是用文本設置的字段未通過驗證 - 他們不應該這樣做。驗證錯誤,文本在代碼中設置隱藏文件

前端的代碼是:

<asp:TextBox ID="tbName" runat="server" ></asp:TextBox> 
<asp:RequiredFieldValidator ID="tbRequired" EnableClientScript="true" 
     Display="Dynamic" runat="server" ControlToValidate="tbName" ErrorMessage="Please enter a name"></asp:RequiredFieldValidator> 

後端代碼是:

tbName.Text = dtDetails.Rows[0]["Name"].ToString(); 

任何建議,將不勝感激。

乾杯

例如,當頁面加載文本框設置(從後面的代碼,所以沒有用戶輸入),如「約翰」(這段文字是文本框裏面),在頁面上時,一個按鈕被點擊時,顯示錯誤消息例如,在其中包含約翰的文本框旁邊的「請輸入一個名稱」。

必填字段有文本在裏面,我不清楚爲什麼它顯示錯誤消息。可以通過在代碼後面設置文本框文本而不是在頁面上輸入代碼來解決問題嗎?

+0

您使用RequiredFieldValidator控件,它只是驗證,如果驗證控件爲空 –

+0

正確的,但它是失敗的驗證時,有在文本框中的文本。 – Harminder

+0

是正確的這是RequiredFieldValidator的默認行爲不驗證,因爲文本有一個值。 –

回答

1

發現該問題是與來自數據庫回到它有額外的空格中的數據,所以我用它固定它的TRIM()方法。

感謝那些回覆。

乾杯

0

我需要更多的信息,但會不會是你忘了內包裝的文本字段的設置如果(!Page.IsPostBack)上的Page_Load()?

例如

if(!Page.IsPostBack) 
{ 
    tbName.Text = dtDetails.Rows[0]["Name"].ToString(); 
} 

Page_Load()運行在每個頁面上,包括PostBacks。如果您沒有將Page_Load()中的設置代碼與上面的if語句一起打包,那麼在調用OnClick事件之前,文本框將被來自DataTable的值覆蓋。如果DataTable中的值爲空(或者DataTable未重新初始化),那麼TextBox會再次變爲空白。

正如我所說,這是一個有點猜測,因爲沒有有關數據或代碼隱藏的代碼多的信息。

+0

感謝您的文章,不幸的是我只是試過,它給了我相同的結果:( – Harminder