0

在编辑模式下,是否有一种简单的方法可以在详细信息视图中修剪值?我尝试修改数据库查询以修剪值,但之后它不喜欢双向进行数据绑定。我尝试查看文本框本身的所有属性,但一无所获。

我知道我可以为数据绑定事件添加一个事件处理程序,并一个一个地设置所有值,但这是一个在我工作之前就已经存在的应用程序,在这个详细信息视图中有超过 40 个值,全部在文本框中看似随机的名称与它们所代表的值或明显的命名方案几乎没有关系。

我想也许有一种方法可以迭代该DetailsView.Fields属性,但也无法解决任何问题。我不允许将架构从更改CHARVARCHAR。还有其他快速的想法吗?此页面很可能会再次更改,我希望将来添加的任何新字段都可以解决此问题,而无需额外工作。不幸的是,现在重新设计它并不是当务之急,所以我正在寻找一个快速修复来减轻使用这个怪物的一些头痛。

4

1 回答 1

4

免责声明:我在 GridView 上使用了它,而不是 DetailsView,但概念是相同的。

创建一个 EditItemTemplateField,将数据绑定到文本框,将其转换为字符串,并修剪字符串。

<Fields>
    <asp:TemplateField HeaderText="FirstName">
        <EditItemTemplate>
            <asp:TextBox ID="txtFirstName" Runat="server" Text='<%#Bind("FirstName").ToString().Trim() %>'/>
        </EditItemTemplate>
    </asp:TemplateField>
</Fields>

编辑:这不起作用,因为您无法在绑定数据时执行转换,只有在不幸使用 Eval 时。

另一种方法是在 DetailsView 更新时遍历每个控件。

void DetailsView1_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)
{
    for (int i = 0; i < e.NewValues.Count; i++)
    {
        if (e.NewValues[i] != null)
        {
            e.NewValues[i] = e.NewValues[i].ToString().Trim();
        }
    }
}

请注意,此示例假定页面上的所有控件都是字符串,如果不是,则必须排除它们。

于 2010-07-07T21:38:20.043 回答