在Gridview中选中复选框

用户名

我正在尝试检查数据库中是否有记录的CheckBox某些行GridView假设我有一个类别的产品1,2,3,4,可包装的产品是1和3。在我的内GridView,对于每个类别,我只选中了产品1和3的复选框,而不是该类别中的所有产品类别。这是我设置我的方法GridView

<!-- Collapsible panel extender body -->
<asp:Panel ID="pBody1" runat="server" CssClass="cpBody">
    <asp:Label ID="lblBodyText1" runat="server" />
    <!-- Grid view to show products based on each category -->
    <asp:GridView ID="gvProduct" runat="server" AutoGenerateColumns="False" Width="998px" CellPadding="4" ForeColor="#333333" GridLines="None" ShowHeader="False" DataKeyNames="id">
        <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
        <Columns>
            <asp:TemplateField HeaderText="Select" ItemStyle-HorizontalAlign="Center">
                <ItemTemplate>
                    <asp:CheckBox ID="cbSelect" runat="server" />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:BoundField DataField="name" HeaderText="Name" ItemStyle-Width="750px" />
            <asp:BoundField DataField="categoryName" HeaderText="Category" />
            <asp:BoundField DataField="inventoryQuantity" HeaderText="Quantity" />
        </Columns>
    </asp:GridView>
</asp:Panel>

从后面的代码开始,我首先获得基于类别的所有产品。我将其命名为prodList。然后,我获得了所有可用于包装的产品。我将其命名为distSPUItemList。我遍历两个列表,如果它们的名称匹配,我会得到该行并选中复选框:

List<ProductPacking> prodList = new List<ProductPacking>();
//Get all products based on category
prodList = prodPackBLL.getAllProductByCategory(category);
gv.DataSource = prodList;
gv.DataBind();

List<DistributionStandardPackingUnitItems> distSPUItemList = new List<DistributionStandardPackingUnitItems>();
distSPUItemList = packBLL.getAllSPUItemByDistributionID(distributionID);
for (int i = 0; i < distSPUItemList.Count; i++)
{
    for (int j = 0; j < prodList.Count; j++)
    {
        GridView gvForCheckBox = (GridView)e.Item.FindControl("gvProduct") as GridView;
        foreach (GridViewRow gr in gvForCheckBox.Rows)
        {
            if (prodList[j].name == distSPUItemList[i].name)
            {
                CheckBox cb = (CheckBox)gr.Cells[0].FindControl("cbSelect");
                cb.Checked = true;
            }
        }
    }
}

但是,对于CheckBox,它只检查该类别内的所有产品,而不是检查prodList和distSPUItemList之间匹配的产品。为什么是这样?

莱拉尼

我相信解决您的问题的最佳方法是确定是否CheckBox应在对“ gvProduct”控件进行数据绑定之前对其进行检查。Data Source提前设置该值将防止您GridView以后必须重新访问

如果这不是一个选择,则下面的解决方案将起作用,但由于您必须重新访问GridView,然后迭代其Row集合,因此更加笨拙

免责声明,是在没有VS2012的情况下完成的,因此,请原谅任何较小的语法错误。我修改了您的代码,以删除与该解决方案无关的部分。首先,获取两个对象列表:

List<ProductPacking> prodList = prodPackBLL.getAllProductByCategory(category);
List<DistributionStandardPackingUnitItems> distSPUItemList = packBLL.getAllSPUItemByDistributionID(distributionID);

接下来,您可以使用简单的LINQ查询来比较对象列表,以查找ProductPacking其name属性等于distSPUItemList中的项目的对象。这将创建一个新的仅匹配对象的集合:

var available = // Start with prodList
                from a in prodList 
                // perform an inner-join between prodList and distSPUItemList only returning objects whose names match
                // (x => x.name == a.name) compares b.name to a.name, this is specifically what enforces that names match.
                from b in distSPUItemList.Where(x => x.name == a.name)
                // after inner joining is done, only select objects from prodList (we could select more things, but we only need these.)
                select a;

最后,您可以迭代gridview行,并查看GridView中显示的name属性是否在可包装的产品列表中,如果是,则选中该复选框。

GridView gvForCheckBox = (GridView)e.Item.FindControl("gvProduct") as GridView;
foreach (GridViewRow gr in gvForCheckBox.Rows)
{
    // query the available collection to see if it contains a ProductPacking object with a name equal to what is in the current GridView row.
    // I would recommend to match on a PK
    // disclaimer, matching on name may be a problem if two different products can have the same name.
    if (available.Where(x=>x.Name==gr.Cells[1].Text).Any())
    {
        CheckBox cb = (CheckBox)gr.Cells[0].FindControl("cbSelect");
        cb.Checked = true;
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

计数GridView中选中的复选框

来自分类Dev

计数GridView中选中的复选框

来自分类Dev

在GridView中选中复选框时计算金额

来自分类Dev

在Gridview中选中一个复选框后,会选中(取消)多个复选框-Android

来自分类Dev

在Gridview中选中一个复选框后,会选中(取消)多个复选框-Android

来自分类Dev

绑定源时在gridview中选中/取消选中复选框

来自分类Dev

复选框未在javascript中选中?

来自分类Dev

在jQuery中选中复选框

来自分类Dev

计算查询中选中的复选框

来自分类Dev

在Django中选中的复选框列出

来自分类Dev

停止从alpineJS中选中复选框?

来自分类Dev

在ListView UWP中选中复选框

来自分类Dev

在GridView中选中复选框时如何获取行值

来自分类Dev

根据存储过程中的非布尔值在Gridview中选中复选框

来自分类Dev

在GridView中选中复选框时如何获取行值

来自分类Dev

使用LINQ在gridview中选中复选框时,如何应用某些代码?

来自分类Dev

GridView将'Y'或'N'转换为复选框。在ItemTemplate字段中选中

来自分类Dev

使用asp.net在gridview中选中复选框时更改div显示

来自分类Dev

删除未选中表行中选中的复选框

来自分类Dev

在jquery的数组中选中或不选中复选框

来自分类Dev

在jQuery中选择主复选框时选中/取消选中复选框

来自分类Dev

如果选中了父复选框,则在laravel中选中子复选框

来自分类Dev

Liferay / Alloy UI中选中的复选框有问题

来自分类Dev

面板中选中了C#Foreach复选框

来自分类Dev

从ajax中选中的复选框获取价值

来自分类Dev

在jqgrid中选中所有复选框的函数

来自分类Dev

如何获得在ValidForm Builder中选中的复选框?

来自分类Dev

jQuery,无法更改复选框中选中的属性

来自分类Dev

jsTree复选框已从html数据中选中

Related 相关文章

  1. 1

    计数GridView中选中的复选框

  2. 2

    计数GridView中选中的复选框

  3. 3

    在GridView中选中复选框时计算金额

  4. 4

    在Gridview中选中一个复选框后,会选中(取消)多个复选框-Android

  5. 5

    在Gridview中选中一个复选框后,会选中(取消)多个复选框-Android

  6. 6

    绑定源时在gridview中选中/取消选中复选框

  7. 7

    复选框未在javascript中选中?

  8. 8

    在jQuery中选中复选框

  9. 9

    计算查询中选中的复选框

  10. 10

    在Django中选中的复选框列出

  11. 11

    停止从alpineJS中选中复选框?

  12. 12

    在ListView UWP中选中复选框

  13. 13

    在GridView中选中复选框时如何获取行值

  14. 14

    根据存储过程中的非布尔值在Gridview中选中复选框

  15. 15

    在GridView中选中复选框时如何获取行值

  16. 16

    使用LINQ在gridview中选中复选框时,如何应用某些代码?

  17. 17

    GridView将'Y'或'N'转换为复选框。在ItemTemplate字段中选中

  18. 18

    使用asp.net在gridview中选中复选框时更改div显示

  19. 19

    删除未选中表行中选中的复选框

  20. 20

    在jquery的数组中选中或不选中复选框

  21. 21

    在jQuery中选择主复选框时选中/取消选中复选框

  22. 22

    如果选中了父复选框,则在laravel中选中子复选框

  23. 23

    Liferay / Alloy UI中选中的复选框有问题

  24. 24

    面板中选中了C#Foreach复选框

  25. 25

    从ajax中选中的复选框获取价值

  26. 26

    在jqgrid中选中所有复选框的函数

  27. 27

    如何获得在ValidForm Builder中选中的复选框?

  28. 28

    jQuery,无法更改复选框中选中的属性

  29. 29

    jsTree复选框已从html数据中选中

热门标签

归档