【问题标题】:understanding parameters in asp.net databinding理解 asp.net 数据绑定中的参数
【发布时间】:2009-07-03 10:15:14
【问题描述】:

我有一个sqldatasource连接,在其参数中,insert参数设置为

INSERT INTO [user_info] ([firstname], [lastname], [age]) VALUES (@firstname, @lastname, @age)

现在我明白@firstname、@lastname、@age 是我为它们设置值的参数。

我正在使用表单视图对其进行数据绑定,该表单视图会自动将 insertitemtemplate 中的文本框分别与 Firstname、lastname 和 age 列绑定。例如,名字文本框具有以下属性。

 <asp:TextBox ID="firstnameTextBox" runat="server" Text='<%# Bind("firstname") %>' />

现在我的疑问是,@firstname 变量如何与 firstname 字段绑定。我没有在任何地方明确使用绑定。说明天我想将插入查询重命名为

INSERT INTO [user_info] ([firstname], [lastname], [age]) VALUES (@fn, @ln, @ag)

为了将 @fn 与 FirstName 等绑定,我必须进行更改。

希望我的问题很清楚。

【问题讨论】:

  • Bind是.net自己生成的函数,在我添加控件的时候是它自己的。

标签: asp.net data-binding


【解决方案1】:

简短回答:更改参数名称不会产生连锁反应。更改您的列名。

详细回答:在这种情况下,使用 Bind(和 Eval)进行数据绑定适用于 SQL 表的列名,而不是参数名。如果您要开始使用带有 @fn 的第二个 INSERT 语句,您的 Bind 将继续使用“firstname”而无需更改。

但是,如果您更新了表格并将“firstname”列重命名为“fn”,则不再是这种情况,您现在有 2 个选择:

  1. 更新所有 Bind() 调用以使用“fn”而不是“firstname” - 如果它发生在许多地方,则需要进行许多更改。
  2. 更新您的 SELECT 语句(或存储过程)以将 fn 列别名为名字(即 SELECT [fn] 作为名字,...其他列... FROM [user_info]) - 这是有利的,因为发生了更改在源头上,并且不影响与“名字”的现有绑定,这意味着只在一个地方进行更改。

【讨论】:

    猜你喜欢
    • 2020-11-03
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-15
    相关资源
    最近更新 更多