为什么GridView在将excel文件导入GridView时会在相关列中自动添加CheckBoxes,而GridView具有bool值列

时间:2017-08-09 13:12:05

标签: c# asp.net excel gridview

我在上传excel表格并在gridview上显示值的页面。 Excel工作表有5列,其中3列具有bool值(TRUE / FALSE)。一切正常,但Gridview在相关列中添加了复选框,其中excel表具有bool值。 Gridview是

<asp:GridView ID="GridView3" runat="server" CellPadding="4" ForeColor="#333333" 
    GridLines="None" style="margin-top: 20px;width:100%;margin-bottom:20px; text-align:left"
    >
    <AlternatingRowStyle BackColor="White" />
    <EditRowStyle BackColor="#FF9F00" />
    <FooterStyle BackColor="#FF9F00" Font-Bold="True" ForeColor="White" />
    <HeaderStyle BackColor="#FF9F00" Font-Bold="True" ForeColor="White" />
    <PagerStyle BackColor="#FF9F00" ForeColor="White" HorizontalAlign="Center" />
    <RowStyle BackColor="#FFD300" />
    <SelectedRowStyle BackColor="#FF0000" Font-Bold="True" ForeColor="#333333" />
    <SortedAscendingCellStyle BackColor="#FFD300" />
    <SortedAscendingHeaderStyle BackColor="#FFD300" />
    <SortedDescendingCellStyle BackColor="#FFD300" />
    <SortedDescendingHeaderStyle BackColor="#FFD300" />
    <Columns>
    <asp:TemplateField HeaderText="SN">
                    <ItemTemplate>
                        <%# Container.DataItemIndex + 1 %>
                    </ItemTemplate>
                </asp:TemplateField>
                </Columns>
</asp:GridView>

并显示为enter image description here

并且excel表: - enter image description here

1 个答案:

答案 0 :(得分:-1)

只要您的Model包含bool列的属性,您就可以将这些属性绑定到DataGrid中的复选框。我有时在尝试绑定到DataGrid Checkbox时遇到麻烦,所以我做了类似的事情。

    <DataGrid ItemsSource="{Binding SOME_COLLECTION, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" AutoGenerateColumns="False" Margin="10" CanUserAddRows="False" VerticalScrollBarVisibility="Auto">

    <DataGridTextColumn Header="Material" Binding="{Binding MATERIAL_PROPERTY}" IsReadOnly="True" />
    <DataGridTextColumn Header="Quantity" Binding="{Binding QUANTITY_PROPERTY}" IsReadOnly="True" />

    <DataGrid.Columns>
        <DataGridTemplateColumn Header="Inspection?">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate> 
                    <CheckBox VerticalAlignment="Center" HorizontalAlignment="Center" IsChecked="{Binding Path=INSPECTION_PROPERTY, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>

        <DataGridTemplateColumn Header="MRC?">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <CheckBox VerticalAlignment="Center" HorizontalAlignment="Center" IsChecked="{Binding Path=MRC_PROPERTY, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>

        <DataGridTemplateColumn Header="Advance?">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <CheckBox VerticalAlignment="Center" HorizontalAlignment="Center" IsChecked="{Binding Path=ADVANCE_PROPERTY, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>

这会将每一行绑定到该模型的bool属性。选中和取消选中复选框将取消模型的属性,您可以从视图模型中找到的属性集中提取值。