TemplateFields中的控件不在GridView中显示

时间:2013-01-08 15:55:16

标签: asp.net

我有一个gridview,其中有一个boundfield,在用户从下拉列表中进行一些选择后填充在代码隐藏中。这很好,但我还有两个其他列,其中包含TemplateFields中的复选框。这些永远不会显示在此gridview中。 这是aspx:

<asp:UpdatePanel ID="clientServerUpdatePanel" runat="server">
        <ContentTemplate>
            <asp:GridView ID="clientServerGridView" runat="server" AutoGenerateColumns="False">
                <Columns>
                    <asp:BoundField HeaderText="Operating System" DataField="OS" />
                    <asp:TemplateField HeaderText="Client" >
                        <asp:ItemTemplate>
                            <asp:CheckBox runat="server" ID="clientCheckBox" Checked="false" />
                        </asp:ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Server">
                        <asp:ItemTemplate>
                            <asp:Checkbox runat="server" ID="serverCheckBox" Checked="false" />
                        </asp:ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
        </ContentTemplate>
    </asp:UpdatePanel>

这是一个置于单击事件处理程序中的相关代码隐藏:

Dim dt As DataTable = New DataTable()
dt.Columns.Add(New DataColumn("OS", System.Type.GetType("System.String")))

For Each OSItem As ListItem In Me.defaultOSesListBox.Items
    If Not OSItem.Selected Then
        Continue For
    End If

    Dim dr As DataRow = dt.NewRow()
    Dim os As String = OSItem.Text
    dr("OS") = os
    dt.Rows.Add(dr)
Next

Me.clientServerGridView.DataSource = dt
Me.clientServerGridView.DataBind()

有谁知道问题的根源是什么?

编辑:我需要将复选框包含在

<ItemTemplate>

而不是

<asp:ItemTemplate>

1 个答案:

答案 0 :(得分:1)

我发现了这个问题。我把复选框包裹在

<asp:ItemTemplate>

应该是什么时候

<ItemTemplate>  

当我做出这个改变时,问题立即得到解决。