2011-06-21 22 views
1

私が作成しているこのプロジェクトでは、DetailView(ブログで見たもの)を使用するページのモックアップを作成しています私のニーズに合ってください。しかし、私はデータが何かに束縛されることを望んでいません。バインドされていない詳細ビューがASP.NET/VB.NETに表示されない

コントロールを追加してから、適切なモックアップ列を追加してテストページでコントロールをレンダリングしようとしました。 ASP.NETが生成するHTMLはどこにもありません。

<div> 



</div> 

<div> 



</div> 

    <input type="submit" name="btnPay" value="Payment page" id="btnPay" /> 

    <br /> 

<div> 



</div> 

    <br /> 

誰を:

ここ
<asp:DetailsView ID="DetailsView1" runat="server" 
    Height="184px" Width="271px" EmptyDataText="no data" 
    style="margin-right: 1px"> 
    <EmptyDataTemplate> 
     There is no data. 
    </EmptyDataTemplate> 
    <FooterTemplate> 
     Passenger Details 
    </FooterTemplate> 
    <Fields> 
     <asp:TemplateField HeaderText="Name" SortExpression="Name"> 
      <EditItemTemplate> 
       <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("PassengerName") %>'></asp:TextBox> 
      </EditItemTemplate> 
      <InsertItemTemplate> 
       <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("PassengerName") %>'></asp:TextBox> 
       <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
        ErrorMessage="this field must be filled in " ControlToValidate="TextBox1"></asp:RequiredFieldValidator> 
       <br /> 
       <br /> 
       <br /> 
      </InsertItemTemplate> 
      <ItemTemplate> 
       <asp:Label ID="Label1" runat="server" Text='<%# Bind("PassengerName") %>'></asp:Label> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Address"> 
      <EditItemTemplate> 
       <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> 
      </EditItemTemplate> 
      <InsertItemTemplate> 
       <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> 
       <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" 
        ErrorMessage="this field must be filled in " ControlToValidate="TextBox2"></asp:RequiredFieldValidator> 
      </InsertItemTemplate> 
      <ItemTemplate> 
       <asp:Label ID="Label2" runat="server"></asp:Label> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Phone"> 
      <EditItemTemplate> 
       <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox> 
      </EditItemTemplate> 
      <InsertItemTemplate> 
       <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox> 
       <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" 
        ControlToValidate="TextBox3" ErrorMessage="this field must be filled in "></asp:RequiredFieldValidator> 
      </InsertItemTemplate> 
      <ItemTemplate> 
       <asp:Label ID="Label3" runat="server"></asp:Label> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Frequent Flyer Number"> 
      <EditItemTemplate> 
       <asp:TextBox ID="TextBox4" runat="server"></asp:TextBox> 
      </EditItemTemplate> 
      <InsertItemTemplate> 
       <asp:TextBox ID="TextBox4" runat="server"></asp:TextBox> 
       <asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" 
        ControlToValidate="TextBox4" ErrorMessage="this field must be filled in "></asp:RequiredFieldValidator> 
      </InsertItemTemplate> 
      <ItemTemplate> 
       <asp:Label ID="Label4" runat="server"></asp:Label> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:BoundField HeaderText="Hello, World." /> 
    </Fields> 
    <HeaderTemplate> 
     Passenger Details 
    </HeaderTemplate> 
</asp:DetailsView> 
<asp:Button ID="btnPay" runat="server" Text="Payment page" /> 
<br /> 
<asp:DetailsView ID="DetailsView2" runat="server" 
    Height="184px" Width="271px" EmptyDataText="no data" 
    style="margin-right: 1px"> 
    <EmptyDataTemplate> 
     There is no data. 
    </EmptyDataTemplate> 
    <FooterTemplate> 
     Passenger Details 
    </FooterTemplate> 
    <HeaderTemplate> 
     Passenger Details 
    </HeaderTemplate> 
</asp:DetailsView> 

が生成されたものです。

ここに私のコードだが(その後、「本当の」DetailsViewコントロール、そしてボタンや空白のテストの詳細は、コントロールの表示があります)任意のアイデアがありますか?この環境では、Visual Studio 2008も使用しています。

答えて

0

何かを表示するには、コントロールの "DataBind"メソッドを呼び出す必要があります。次のaspxだけでは何も

<asp:DetailsView ID="dtsView" runat="server"> 
      <EmptyDataTemplate> 
       THIS IS EMPTY 
      </EmptyDataTemplate> 
     </asp:DetailsView> 

示していないが、彼はC#の最後まで、次のコードを追加した場合

protected void Page_Load(object sender, EventArgs e) 
    { 
     dtsView.DataSource = new DataTable(); 
     dtsView.DataBind(); 
    } 

生成されます、次の

あなたの目標は、だましてあるように思われる
<table cellspacing="0" rules="all" border="1" id="dtsView" style="border-collapse:collapse;"> 
    <tbody><tr> 
     <td> 
       THIS IS EMPTY 
      </td> 
    </tr> 
</tbody></table> 
1

asp:Details自分自身とそのフィールドをデータにバインドするつもりはないが、表示すること。 これを行うことができます!

DataTable = New DataTable 
DataTable.Rows.Add() 
Me.dtlMyDetailView.DataSource = DataTable 
Me.dtlMyDetailView.DataBind() 

また、CommandNameが設定されている場合、ButtonFieldsはItemCommandイベントを生成します。 IsPostBackまたは他のロジックを使用して、ビューステートを保持したり消失したりしたくないときにDataBindを行わないようにすることができます。 ItemCommandイベントに応答し、詳細ビューで任意のコントロールの値を使用する場合は、ビューステートが必要です。 DataBindはそれを吹き飛ばします。