2008-09-13 39 views
0

在我的應用我有TextBox在綁定到LinqDataSource像這樣一個FormViewASP.NET轉換無效的字符串爲Null

<asp:TextBox ID="MyTextBox" runat="server" 
      Text='<%# Bind("MyValue") %>' AutoPostBack="True" 
      ontextchanged="MyTextBox_TextChanged" /> 

protected void MyTextBox_TextChanged(object sender, EventArgs e) 
{ 
    MyFormView.UpdateItem(false); 
} 

這是內部的UpdatePanel所以任何改變字段立即堅持。另外,MyValue的值是decimal?。這工作正常,除非我輸入任何字符串不能轉換爲十進制字段。在這種情況下,UpdateItem調用拋出:

LinqDataSourceValidationException - 無法對類型的MyType一個或多個屬性。 asdf不是Decimal的有效值。

我明白這個問題,ASP.NET不知道如何從'asdf'轉換爲decimal ?.我希望它做的是將所有這些無效值轉換爲空。做這個的最好方式是什麼?

回答

1

我想你應該在你的頁面上處理LinqDataSource的Updating事件。檢查無效字符串(使用TryParse方法或其他),然後繼續進行基類更新。

(編輯:我的直覺行了什麼建議here

1

不熟悉ASP,但在.NET中,不能你只是做沿着

protected void MyTextBox_TextChanged(object sender, EventArgs e) 
{ 
    Decimal d = null; 
    TextBox tb = sender as TextBox; 

    if(!Decimal.TryParse(tb.Text, out d)) 
    { 
      tb.Text = String.Empty; 
    } 
    MyFormView.UpdateItem(false); 
} 
東西線
相關問題