这个 ASP.net DataBinding 程序有什么问题?
What is wrong with this ASP.net DataBinding program?
我习惯于在客户端写入数据,然后使用 JavaScript 验证表单并将其提交到服务器端的新页面,更新数据库,然后再次进行。
我正在考虑在 ASP.net 上编程,在客户端进行编程不是一个好习惯,因为服务器端的安全性更好。
我正在尝试使用 sqlDataSources 和 DataBinding 执行此操作,但未成功。
在我的页面上我只有两个输入框。这些盒子是空的。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Prueba.aspx.cs"
Inherits="MaximaBR.com.Prueba" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:SqlDataSource id="SqlDataSource1" runat="server"
DataSourceMode="DataReader"
ConnectionString="<%$ ConnectionStrings:Data %>"
SelectCommand="SELECT [idpropiedad],[propietario]
FROM [dbo].[Propiedades]
WHERE [idpropiedad] = 525293">
<SelectParameters>
<asp:ControlParameter name="idpropiedad"
controlid="idpropiedadBox" propertyname="Text" />
<asp:ControlParameter name="propietario"
controlid="propietarioBox" propertyname="Text" />
</SelectParameters>
</asp:SqlDataSource>
<asp:TextBox id="idpropiedadBox" runat="server"
DataSourceID="SqlDataSource1"></asp:TextBox>
<asp:TextBox id="propietarioBox" runat="server"
DataSourceID="SqlDataSource1"></asp:TextBox>
</div>
</form>
</body>
</html>
我已经阅读了很多关于此的文章,但我的应用程序是在 WebForms 上,而不是 mvc,所以我想这样做。
另外,我有很多响应式字段html,所以我不需要使用gridview。
在我看来,我丢失了数据视图,而这正是我所需要的。我习惯了在 Visual Basic 6.0 上使用数据绑定,但在这里它似乎有点棘手,无法让它工作。
也许我的问题之一是我不了解页面加载的 WebForm 周期时间和预渲染等其他周期时间?
- 您需要一个数据绑定服务器控件来显示/编辑/更新数据。对于单行
asp:FormView
是可以的。
- 您需要将子控件绑定到基础字段。
Eval
用于单向绑定,Bind
用于双向绑定。
代码可能如下所示。
<asp:FormView runat="server" DefaultMode="Edit" DataSourceID="SqlDataSource1">
<EditItemTemplate>
<asp:TextBox ID="idpropiedadBox" runat="server" Text='<%#Bind("idpropiedad") %>'></asp:TextBox>
<asp:TextBox ID="propietarioBox" runat="server" Text='<%#Bind("propietario") %>'></asp:TextBox>
<asp:Button ID="btnUpdate" runat="server" CommandName="Update" Text="Update" />
</EditItemTemplate>
</asp:FormView>
<asp:SqlDataSource
ID="SqlDataSource1"
runat="server"
DataSourceMode="DataSet"
ConnectionString="<%$ ConnectionStrings:Data%>"
SelectCommand="SELECT [idpropiedad],[propietario] FROM [dbo].[Propiedades] WHERE [idpropiedad] = 525293 "
UpdateCommand="update [dbo].[Propiedades] set [idpropiedad]=@idpropiedad,[propietario]=@propietario WHERE [idpropiedad] = 525293">
<SelectParameters>
<%--no need as select command doesn't have parameters --%>
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="idpropiedad" Type="Int32" />
<asp:Parameter Name="propietario" Type="String" Size="1024" />
</UpdateParameters>
</asp:SqlDataSource>
我习惯于在客户端写入数据,然后使用 JavaScript 验证表单并将其提交到服务器端的新页面,更新数据库,然后再次进行。
我正在考虑在 ASP.net 上编程,在客户端进行编程不是一个好习惯,因为服务器端的安全性更好。
我正在尝试使用 sqlDataSources 和 DataBinding 执行此操作,但未成功。
在我的页面上我只有两个输入框。这些盒子是空的。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Prueba.aspx.cs"
Inherits="MaximaBR.com.Prueba" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:SqlDataSource id="SqlDataSource1" runat="server"
DataSourceMode="DataReader"
ConnectionString="<%$ ConnectionStrings:Data %>"
SelectCommand="SELECT [idpropiedad],[propietario]
FROM [dbo].[Propiedades]
WHERE [idpropiedad] = 525293">
<SelectParameters>
<asp:ControlParameter name="idpropiedad"
controlid="idpropiedadBox" propertyname="Text" />
<asp:ControlParameter name="propietario"
controlid="propietarioBox" propertyname="Text" />
</SelectParameters>
</asp:SqlDataSource>
<asp:TextBox id="idpropiedadBox" runat="server"
DataSourceID="SqlDataSource1"></asp:TextBox>
<asp:TextBox id="propietarioBox" runat="server"
DataSourceID="SqlDataSource1"></asp:TextBox>
</div>
</form>
</body>
</html>
我已经阅读了很多关于此的文章,但我的应用程序是在 WebForms 上,而不是 mvc,所以我想这样做。
另外,我有很多响应式字段html,所以我不需要使用gridview。
在我看来,我丢失了数据视图,而这正是我所需要的。我习惯了在 Visual Basic 6.0 上使用数据绑定,但在这里它似乎有点棘手,无法让它工作。
也许我的问题之一是我不了解页面加载的 WebForm 周期时间和预渲染等其他周期时间?
- 您需要一个数据绑定服务器控件来显示/编辑/更新数据。对于单行
asp:FormView
是可以的。 - 您需要将子控件绑定到基础字段。
Eval
用于单向绑定,Bind
用于双向绑定。
代码可能如下所示。
<asp:FormView runat="server" DefaultMode="Edit" DataSourceID="SqlDataSource1">
<EditItemTemplate>
<asp:TextBox ID="idpropiedadBox" runat="server" Text='<%#Bind("idpropiedad") %>'></asp:TextBox>
<asp:TextBox ID="propietarioBox" runat="server" Text='<%#Bind("propietario") %>'></asp:TextBox>
<asp:Button ID="btnUpdate" runat="server" CommandName="Update" Text="Update" />
</EditItemTemplate>
</asp:FormView>
<asp:SqlDataSource
ID="SqlDataSource1"
runat="server"
DataSourceMode="DataSet"
ConnectionString="<%$ ConnectionStrings:Data%>"
SelectCommand="SELECT [idpropiedad],[propietario] FROM [dbo].[Propiedades] WHERE [idpropiedad] = 525293 "
UpdateCommand="update [dbo].[Propiedades] set [idpropiedad]=@idpropiedad,[propietario]=@propietario WHERE [idpropiedad] = 525293">
<SelectParameters>
<%--no need as select command doesn't have parameters --%>
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="idpropiedad" Type="Int32" />
<asp:Parameter Name="propietario" Type="String" Size="1024" />
</UpdateParameters>
</asp:SqlDataSource>