0

チェックボックスをクリックしてセル値変更イベントを見ると、チェックボックスが最初にチェックされていなかった場合は値が常にfalseになり、チェックボックスが最初にチェックされていた場合は常にtrueになります...

更新:ボックスをチェックすると、セルがフォーカスを失い、元の状態に戻りますが、理由はわかりませんか???

これはなぜですか、どうすればこれを回避できますか?

private void CellValueChanged(object sender, GridViewCellEventArgs e)
        {
//e.Value always false or true depending on original state
}

アップデート:

GridView の設定

public void PopulateEvents(User user)
        {
            if (user.EventSubscriptions.Count < 1)
                AddDefaultEvents(user);

            var query = user.EventSubscriptions.Join(sp.Events, r => r.EventId, p => p.EventId, (r, p) =>
                new { r.UserId, r.EventSubscriptionId, p.EventType, p.EventAction, r.IsAlert, r.IsEmail, r.AlertLevel })
                .Where(pr => pr.UserId == user.ID);

            BindingSource temp = new BindingSource() { DataSource = query };
            RGVAlerts.DataSource = temp; 

            //RGVAlerts.DataSource = query;

            foreach (var column in RGVAlerts.Columns)
            {
                switch (column.HeaderText)
                {
                    case "EventType":
                        column.HeaderText = "Category"; break;
                    case "EventAction":
                        column.HeaderText = "Event Action"; break;
                    case "IsAlert":
                        column.HeaderText = "Send Alert";
                        column.ReadOnly = false;
                        break;
                    case "IsEmail":
                        column.HeaderText = "Send Email";
                        column.ReadOnly = false; break;

                    case "AlertLevel":
                        column.HeaderText = "Alert Level"; break;
                }
            }
            RGVAlerts.Columns.Remove("UserId");
            RGVAlerts.Columns.Remove("AlertLevel");
            RGVAlerts.Columns.Remove("EventSubscriptionId");

            GridViewComboBoxColumn comboLevel = new GridViewComboBoxColumn();
            comboLevel.DataSource = new string[] { "INFORMATION", "MILD", "SEVERE", "COUNT" };

            RGVAlerts.Columns.Add(comboLevel);
            comboLevel.FieldName = "AlertLevel";
            comboLevel.HeaderText = "AlertLevel";

            RGVAlerts.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.None;
            foreach (GridViewDataColumn column in RGVAlerts.Columns)
            {
                column.BestFit();
                column.Width += 58;

            };
            RGVAlerts.AllowCellContextMenu = true;
            RGVAlerts.AllowEditRow = true;
            RGVAlerts.CausesValidation = true;

            RGVAlerts.Refresh();
        }
4

1 に答える 1

1

RadGridView のチェック ボックス エディターは永続的なエディターであり、セルの値は現在のセルを変更した場合にのみ変更されます。ユーザーがチェック ボックスをオンにしたときに値を強制的に変更するには、RadGridView の ValueChanged イベントをサブスクライブし、EndEdit メソッドを呼び出す必要があります。

void radGridView1_ValueChanged(object sender, EventArgs e)
{
    if (radGridView1.CurrentColumn.Name == "MyCheckBoxColumnName")
    {
        radGridView1.EndEdit();
    }
}
于 2013-07-16T05:34:49.163 に答える