理解asp.net数据绑定中的参数

时间:2009-07-03 10:15:15

标签: asp.net data-binding

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

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

现在我理解@firstname,@ lastname,@ tag是我为其设置值的参数。

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

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

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

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

我必须进行更改,以便将@fn与FirstName绑定,依此类推。

希望我的问题很明确。

1 个答案:

答案 0 :(得分:0)

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

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

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

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