首页 > 解决方案 > Gridview 多个复选框选择

问题描述

我想检查多个项目复选框而不单击复选框,而不是单击其他单击列。

这是我的 **.cs 代码

private void gridView2_RowClick(object sender,DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
    {
        if (gridView2.GetSelectedRows().Count() > 0)
        {
            foreach (int i in gridView2.GetSelectedRows())
            {
                gridView2.SelectRow(i);
            }
        }
    }

而且,这是我的 **.designer.cs 代码

this.gridView2.OptionsSelection.MultiSelect = true;
this.gridView2.OptionsSelection.MultiSelectMode = DevExpress.XtraGrid.Views.Grid.GridMultiSelectMode.CheckBoxRowSelect;
this.gridView2.OptionsSelection.ShowCheckBoxSelectorInGroupRow = DevExpress.Utils.DefaultBoolean.True;

标签: asp.net.net-framework-4.8

解决方案


好的,假设一个gridview?

我们有这个标记:

        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ID" CssClass="table table-hover" OnRowDataBound="GridView1_RowDataBound">
            <Columns>
                <asp:BoundField DataField="FirstName" HeaderText="FirstName"  />
                <asp:BoundField DataField="LastName" HeaderText="LastName"  />
                <asp:BoundField DataField="HotelName" HeaderText="HotelName" />
                <asp:BoundField DataField="City" HeaderText="City"  />

                <asp:TemplateField HeaderText="Check Test" ItemStyle-HorizontalAlign="Center">
                    <ItemTemplate>
                        <asp:CheckBox ID="CheckBox1" runat="server" OnClick="MyCheckBoxClick(this);"/>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>

        <script>
            function MyRowCheck(ctrl) {
                MyCheckBox = document.getElementById(ctrl);
                MyCheckBox.checked = !MyCheckBox.checked
            }

            function MyCheckBoxClick(ct) {
                ct.checked = !ct.checked
            }

        </script>

要加载的代码:

   protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            LoadGrid();
        }
    }

    void LoadGrid()
    {

        using (SqlCommand cmdSQL = new SqlCommand("SELECT TOP 12 * from tblHotels ORDER BY HotelName",
                     new SqlConnection(Properties.Settings.Default.TEST3)))
        {

            cmdSQL.Connection.Open();
            GridView1.DataSource = cmdSQL.ExecuteReader();
            GridView1.DataBind();
        }

    }

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            CheckBox MyCheckBox = (CheckBox)e.Row.FindControl("CheckBox1");
            e.Row.Attributes["onclick"] = "MyRowCheck('" + MyCheckBox.ClientID + "');";
        }
    }

因此,我们只需将 ROW 单击附加到网格。

我们得到这个输出:

在此处输入图像描述

这工作正常,单击该行将切换复选框。

但是,问题是如果你真的点击了复选框。行单击触发切换复选框,然后单击复选框也触发并取消您刚刚所做的!

所以,我在复选框中添加了点击事件——我们只需再次切换设置,我们就可以开始了。


推荐阅读