2012-01-11 11 views
0

私はリストビューコントロールをSQLデータベースに接続して予約を作成するasp.netプログラムを作成しています。ユーザーは、データベースに送信する情報の大部分(名前、電話番号など)を入力しますが、追加する前に自動的に入力する情報(現在の日付/時刻など)がありますデータベース。私はコードビハインド(C#)でこれを設定したいと思いますが、それを行う正しい方法を理解できないようです。どんな考えでも大歓迎です!CodeBehindからのASP.NETデータバインディング

<%@ 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> 

+0

を、あなたは現在、データベースの挿入を実行するために使用しているコードを表示することができますか?それを行うには複数の方法があり、あなたがやっていることに役立つ答えがあります。 – David

+0

確かに...私のポストにコードが追加されました。 – SHeinema

答えて

2

保存するオブジェクトにアクセスするには、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; 
    ... 
} 
+0

を参照してください。私はSqlDataSourceと非常によく似たことをして、計算された列/トリガーなどとして実行できない列の値を設定します。 – Nikki9696

+0

これは私が必要とするようなものです!しかし、listviewのどのイベントがこのメソッドをトリガーしますか?私は正しいコードビハインド構文を持っていると思いますが、メソッドが呼び出されることはありません。これを呼び出すには、.aspxページに値を設定する必要がありますか? – SHeinema

+0

それぞれのItemTemplatesのInsert/UpdateボタンのCommandNameプロパティはそこにあり、オブジェクトがデータソースによって永続化されるときにイベントハンドラをトリガする必要があります。データソースにOnUpdatingおよびOnInsertingプロパティを設定していることを確認してください。デザイナーに行き、データソースをクリックしてイベントを表示し、挿入イベントと更新イベントをダブルクリックしてイベントハンドラを自動的に配線します。 – Rich

1

理由だけではなく、あなたがデータベースに設定されて(あなたの例では、日時など)の自動移入するために必要なフィールドを持っていない:ここでは

は私の現在のコードですか? (SQL Serverには、デフォルトの列値で使用できる現在の日時を返すGetDate関数があると思います)

+0

オートポピュレーションの提案をお寄せいただきありがとうございます。それは実際に日付/時刻で動作するかもしれませんが、コードビハインドから値を設定する方法を理解する必要があるため、いくつかの計算を含むフィールドも追加します。 – SHeinema

+0

このサイトをチェックする - おそらく答えを見つけることができると確信しています:http://www.maconstateit.net/tutorials/ – Tim

+0

これで、getdate()fncを使って日付を挿入しましたが、列を現在の日付/時刻に変更します。どのようにしてそのセルの現在の日付/時刻を設定し、それをそのままにするか考えていますか? – SHeinema

関連する問題