在我用我已经 TextBox 在一个 FormView 开一个 LinqDataSource 像这样:

<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 因此,任何改变的领域是立即仍然存在。此外,值 MyValuedecimal?.该工作良好,除非我输入任意字符串不可转换到小数点进入该领域。在这种情况下, UpdateItem 呼叫抛出:

LinqDataSourceValidationException - 未设置一个或更多性质上类型的指示.航空自卫队不是一个有效的值用十进制。

我理解这个问题,ASP.NET 不知道如何将从航空自卫队'到小数点?.什么我想要做的就是把所有这些无效的值为空。什么是最好的方式做到这一点?

有帮助吗?

解决方案

我觉得你应该处理的新事件的LinqDataSource在你的网页。做你的检查无效串(使用TryParse方法或一些东西)和然后继续与基类的更新。

(编辑:我的直觉行了什么样的建议 在这里,)

其他提示

不熟悉ASP,但在。净,你就不能做沿线的东西

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);
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top