Выбор нескольких флажков Gridview

avatar
radipu
8 августа 2021 в 18:03
147
1
0

Я хочу установить флажки для нескольких элементов, не нажимая на флажок, а не на другие столбцы.

Вот мой код **.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;
Источник
Albert D. Kallal
8 августа 2021 в 18:33
0

Неясно, нужна ли вам кнопка за пределами сетки, которую вы нажимаете, и она выбирает все флажки для вас, или если вы хотите, чтобы пользователь щелкнул ЛЮБОЕ место в строке или флажок, чтобы установить флажок.

radipu
8 августа 2021 в 18:50
0

@AlbertD.Kallal Мне жаль, что я не смог это прояснить. Но вы правы. Если я нажму ЛЮБОЕ место в строке или флажок, чтобы установить флажок.

Ответы (1)

avatar
Albert D. Kallal
8 августа 2021 в 20:32
0

Хорошо, предполагая вид сетки?

У нас есть такая разметка:

        <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 клик к сетке.

Мы получаем следующий вывод:

enter image description here

это работает нормально, и щелчок по строке установит флажок.

но тогда ПРОБЛЕМА возникает, если вы на самом деле щелкаете по флажку. Щелчок строки активирует флажок, а затем щелчок флажка ТАКЖЕ активирует и отменяет то, что вы только что сделали!!

Итак, я добавил событие по щелчку в флажок, и мы просто снова переключаем настройку, и все готово.