【问题标题】:What is wrong with this ASP.net DataBinding program?这个 ASP.net DataBinding 程序有什么问题?
【发布时间】:2019-10-20 23:53:55
【问题描述】:

我习惯于在客户端写入数据,然后使用 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 Cycles 时间和其他周期时间(例如预渲染)?

【问题讨论】:

    标签: asp.net sqldatasource


    【解决方案1】:
    1. 您需要一个数据绑定服务器控件来显示/编辑/更新数据。对于单行asp:FormView 即可。
    2. 您需要将子控件绑定到基础字段。 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>
    

    【讨论】:

    • 我按照你说的实施并且工作正常!下一步是接收 idpropiedad 的 url 参数并将其替换为 Select 和 Update。我昨晚尝试使用 ,但没有像这样工作。我需要用另一种方式来做。我想知道怎么做。
    • 我在docs.microsoft.com/en-us/previous-versions/… 上发现要使用 对 Select 有效,然后在 Update 中添加一个!!!太棒了!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    • 1970-01-01
    • 1970-01-01
    • 2019-12-05
    • 1970-01-01
    相关资源
    最近更新 更多