【问题标题】:ASP.NET Data Binding from CodeBehind来自 CodeBehind 的 ASP.NET 数据绑定
【发布时间】:2012-02-08 05:05:54
【问题描述】:

我正在编写一个用于创建预订的 asp.net 程序,其中我有一个连接到 SQL 数据库的 listview 控件。用户输入要发送到数据库的大部分信息(姓名、电话号码等)但是有一些信息(例如当前日期/时间)我希望在添加到数据库之前自动填充分贝。我想在代码隐藏(C#)中进行设置,但我似乎无法找出正确的方法。任何想法将不胜感激!

这是我当前的代码:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SummaryForm.ascx.cs" Inherits="RamRideOps.Controls.SummaryForm" %>

<asp:EntityDataSource ID="Rides_EDS" runat="server" 
ConnectionString="name=RamRideOpsEntities" 
DefaultContainerName="RamRideOpsEntities" EnableFlattening="False" 
EntitySetName="Rides" EntityTypeFilter="Ride" EnableDelete="True" 
EnableInsert="True" EnableUpdate="True">
</asp:EntityDataSource>

<asp:ListView ID="SummaryLV" runat="server" DataKeyNames="TimeOfCall" 
DataSourceID="Rides_EDS" InsertItemPosition="LastItem" 
onselectedindexchanged="ListView1_SelectedIndexChanged">
<AlternatingItemTemplate>
    <tr style="background-color:#FFF8DC;">           
        <td>
            <asp:Label ID="TimeOfCallLabel" runat="server" 
                Text='<%# Eval("TimeOfCall") %>' />
        </td>           
        <td>
            <asp:Label ID="NameLabel" runat="server" Text='<%# Eval("Name") %>' />
        </td>
        <td>
            <asp:Label ID="PhoneLabel" runat="server" Text='<%# Eval("Phone") %>' />
        </td>
        <td>
            <asp:Label ID="NumPatronsLabel" runat="server" 
                Text='<%# Eval("NumPatrons") %>' />
        </td>
        <td>
            <asp:Label ID="PickupAddressLabel" runat="server" 
                Text='<%# Eval("PickupAddress") %>' />
        </td>            
        <td>
            <asp:Label ID="DropoffAddressLabel" runat="server" 
                Text='<%# Eval("DropoffAddress") %>' />
        </td>
        <td>
            <asp:Label ID="StatusLabel" runat="server" Text='<%# Eval("Status") %>' />
        </td>
        <td>
            <asp:Label ID="AssignedCarLabel" runat="server" 
                Text='<%# Eval("AssignedCar") %>' />
        </td>
        <td>
            <asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="Edit" />
            <asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="Delt" />                
        </td>
    </tr>
</AlternatingItemTemplate>
<EditItemTemplate>
    <tr style="background-color:#008A8C;color: #FFFFFF;">
        <td>
            <asp:TextBox ID="NameTextBox" runat="server" Text='<%# Bind("Name") %>' />
        </td>
        <td>
            <asp:TextBox ID="PhoneTextBox" runat="server" Text='<%# Bind("Phone") %>' />
        </td>
        <td>
            <asp:TextBox ID="NumPatronsTextBox" runat="server" 
                Text='<%# Bind("NumPatrons") %>' />
        </td>
        <td>
            <asp:TextBox ID="PickupAddressTextBox" runat="server" 
                Text='<%# Bind("PickupAddress") %>' />
        </td>            
        <td>
            <asp:TextBox ID="DropoffAddressTextBox" runat="server" 
                Text='<%# Bind("DropoffAddress") %>' />
        </td>
        <td>
            <asp:TextBox ID="StatusTextBox" runat="server" Text='<%# Bind("Status") %>' />
        </td>
        <td>
            <asp:TextBox ID="AssignedCarTextBox" runat="server" 
                Text='<%# Bind("AssignedCar") %>' />
        </td>
        <td>
            <asp:Button ID="UpdateButton" runat="server" CommandName="Update" 
                Text="Update" />
            <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" 
                Text="Cancel" />
        </td>
    </tr>
</EditItemTemplate>
<EmptyDataTemplate>
    <table runat="server" 
        style="background-color: #FFFFFF;border-collapse: collapse;border-color: #999999;border-style:none;border-width:1px;">
        <tr runat="server">
            <td runat="server">
                There are currently no scheduled rides!</td>
        </tr>
    </table>
</EmptyDataTemplate>
<InsertItemTemplate>
    <tr style="">
        <td>
            <asp:TextBox ID="TimeOfCallTextBox" runat="server" 
                Text='<%# Bind("TimeOfCall") %>' Visible="False" />
        </td>
        <td>
            <asp:TextBox ID="NameTextBox" runat="server" Text='<%# Bind("Name") %>' />
        </td>
        <td>
            <asp:TextBox ID="PhoneTextBox" runat="server" Text='<%# Bind("Phone") %>' />
        </td>
        <td>
            <asp:TextBox ID="NumPatronsTextBox" runat="server" 
                Text='<%# Bind("NumPatrons") %>' />
        </td>
        <td>
            <asp:TextBox ID="PickupAddressTextBox" runat="server" 
                Text='<%# Bind("PickupAddress") %>' />
        </td>
        <td>
            <asp:TextBox ID="DropoffAddressTextBox" runat="server" 
                Text='<%# Bind("DropoffAddress") %>' />
        </td>
        <td>
            <asp:TextBox ID="StatusTextBox" runat="server" Text='<%# Bind("Status") %>' Visible="True" />
        </td>
        <td>
            <asp:TextBox ID="AssignedCarTextBox" runat="server" 
                Text='<%# Bind("AssignedCar") %>' />
        </td>
        <td>
            <asp:Button ID="InsertButton" runat="server" CommandName="Insert" 
                Text="Add" OnClientClick="addButton_Click" />
            <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" 
                Text="Clear" />
        </td>
    </tr>
</InsertItemTemplate>
<ItemTemplate>
    <tr style="background-color:#DCDCDC;color: #000000;">     
        <td>
            <asp:Label ID="TimeOfCallLabel" runat="server" 
                Text='<%# Eval("TimeOfCall") %>' />
        </td>           
        <td>
            <asp:Label ID="NameLabel" runat="server" Text='<%# Eval("Name") %>' />
        </td>
        <td>
            <asp:Label ID="PhoneLabel" runat="server" Text='<%# Eval("Phone") %>' />
        </td>
        <td>
            <asp:Label ID="NumPatronsLabel" runat="server" 
                Text='<%# Eval("NumPatrons") %>' />
        </td>
        <td>
            <asp:Label ID="PickupAddressLabel" runat="server" 
                Text='<%# Eval("PickupAddress") %>' />
        </td>            
        <td>
            <asp:Label ID="DropoffAddressLabel" runat="server" 
                Text='<%# Eval("DropoffAddress") %>' />
        </td>
        <td>
            <asp:Label ID="StatusLabel" runat="server" Text='<%# Eval("Status") %>' />
        </td>
        <td>
            <asp:Label ID="AssignedCarLabel" runat="server" 
                Text='<%# Eval("AssignedCar") %>' />
        </td>
        <td>
            <asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="Edit" />
            <asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="Delt" />                
        </td>
    </tr>
</ItemTemplate>

<LayoutTemplate>
    <table runat="server">
        <tr runat="server">
            <td runat="server">
                <table ID="itemPlaceholderContainer" runat="server" border="1" 
                    style="background-color: #FFFFFF;border-collapse: collapse;border-color: #999999;border-style:none;border-width:1px;font-family: Verdana, Arial, Helvetica, sans-serif;">
                    <tr runat="server" style="background-color:#DCDCDC;color: #000000;">
                        <th runat="server" style="width:auto">
                            Call Time</th>                            
                        <th runat="server" style="width:auto">
                            Name</th>
                        <th runat="server" style="width:5px">
                            Phone</th>
                        <th runat="server" style="width:auto">
                            Size</th>
                        <th runat="server" style="width:auto">
                            Pick-Up</th>
                        <th runat="server" style="width:auto">
                            Drop-Off</th>
                        <th runat="server" style="width:auto">
                            Status</th>
                        <th runat="server" style="width:auto">
                            Car</th>
                        <th id="Th1" runat="server">
                            </th>
                    </tr>
                    <tr ID="itemPlaceholder" runat="server">
                    </tr>
                </table>
            </td>
        </tr>
        <tr runat="server">
            <td runat="server" 
                style="text-align: center;background-color: #CCCCCC;font-family: Verdana, Arial, Helvetica, sans-serif;color: #000000;">
                <asp:DataPager ID="DataPager1" runat="server">
                    <Fields>
                        <asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="True" 
                            ShowLastPageButton="True" />
                    </Fields>
                </asp:DataPager>
            </td>
        </tr>
    </table>
</LayoutTemplate>

【问题讨论】:

  • 您能展示一下您当前用于执行数据库插入的代码吗?有多种方法可以做到这一点,一个有用的答案取决于你在做什么。
  • 当然...代码已添加到我的帖子中。

标签: asp.net sql listview code-behind data-binding


【解决方案1】:

使用 EntityDataSource.Inserting 或 EntityDataSource.Updating 事件来访问您正在保存的对象。

您可以访问实体属性来更改对象中的值,如下所示:

// E.g. Inserting
protected void Rides_EDS_DataSource_Inserting(object sender, EntityDataSourceChangingEventArgs e)
{
    var rides = (e.Entity as Rides);
    rides.Date = DateTime.Now;
    rides.Total = Fee + Tax;
    ...
}

【讨论】:

  • 投票。我用 SqlDataSource 做了一些非常相似的事情来设置不能作为计算列/触发器等的列值。
  • 好吧,这正是我所需要的!但是列表视图中的什么事件触发了这个方法?我认为我的代码隐藏语法正确,但该方法永远不会被调用。我是否必须在 .aspx 页面中设置一个值才能调用它?
  • 相应 ItemTemplates 中插入/更新按钮的 CommandName 属性在那里,因此当对象被数据源持久保存时,它们应该触发事件处理程序。确保您已在数据源上设置 OnUpdating 和 OnInserting 属性。尝试转到设计器,单击数据源并查看事件并双击插入和更新事件以自动连接事件处理程序。
  • w00t,明白了!只需将 OnInserting="Rides_EDS_Inserting" 属性添加到实体数据源。感谢大家的帮助,你们太棒了!
【解决方案2】:

为什么不在数据库中设置要自动填充的字段(例如示例中的日期时间)? (我认为 SQL Server 有一个 GetDate 函数,它返回您可以使用默认列值的当前日期时间)

【讨论】:

  • 感谢自动填充建议,这可能确实适用于日期/时间,但是我还将添加一些涉及一些计算的字段,所以我仍然需要弄清楚如何设置值从代码隐藏。
  • 看看这个网站 - 我打赌你可能会找到答案:maconstateit.net/tutorials
  • 好的,所以我得到了 getdate() fnc 来插入日期,但是每次插入新行时,它都会将该列中的每个条目更改为当前日期/时间。知道如何让它为该单元格设置当前日期/时间,然后不理会它吗?
  • 您是否允许在列中使用空值?它们可能具有看起来像当前日期/时间的内容,因为这些值都是一次性填写的。
  • 啊,我的错。我认为您会想要使用触发器并在插入/更新时更新该字段。见msdn.microsoft.com/en-us/library/aa258254%28v=sql.80%29.aspx
猜你喜欢
  • 1970-01-01
  • 2013-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-05
  • 1970-01-01
  • 1970-01-01
  • 2011-12-02
相关资源
最近更新 更多