未绑定的DetailsView不在ASP.NET/VB.NET中显示

|| 在我正在创建的这个项目中,我正在创建一个页面的模型,该页面使用似乎适合我需求的DetailView(我在博客中看到的东西)。但是,我不想将数据绑定到任何东西。 因此,我添加了控件,然后开始向其中添加适当的模型列,并尝试在测试页上呈现该控件。 ASP.NET应该生成HTML的地方不存在。 这是我的代码(有一个\'real \'DetailsView控件,然后是一个按钮,然后是一个空白的测试Details视图控件):
<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>
这是生成的内容:
<div>



</div>

<div>



</div>

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

    <br />

<div>



</div>

    <br />
有人有什么想法吗?在这种环境下,我们也使用Visual Studio 2008。     
已邀请:
        您的目标似乎是欺骗asp:DetailsView以显示其自身及其字段,即使您无意将其绑定到数据。 可以做到的!
DataTable = New DataTable
DataTable.Rows.Add()
Me.dtlMyDetailView.DataSource = DataTable
Me.dtlMyDetailView.DataBind()
此外,如果设置了CommandName,ButtonFields将生成ItemCommand事件。 您可以使用IsPostBack或其他逻辑来确保当您不想丢失视图状态时不使用DataBind。如果要响应ItemCommand事件并在详细信息视图中使用任何控件的值,则需要使用viewstate。 DataBind将其吹走。     
        必须显示控件的\“ 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>
    

要回复问题请先登录注册