/// <summary> /// 点击指定的行。 /// <para> /// 若指定的索引是 -1,则: /// <list type="bullet"> /// <item> /// 若设置了 <see cref="RowSelectedColor"/> 参数,将取消所有的选中背景。 /// </item> /// <item> /// <see cref="BootDataGridRowSelectedEventArgs.Item"/> 的值是 null。 /// </item> /// </list> /// </para> /// </summary> /// <param name="index">点击行的索引。</param> /// <exception cref="InvalidOperationException">索引超出数组范围。</exception> public async Task ClickRow(int index) { if (index > Data.Count) { throw new ArgumentOutOfRangeException($"指定的索引({index})超出数组范围({Data.Count})"); } await OnRowSelected.InvokeAsync(new BootDataGridRowSelectedEventArgs(index, index < 0 ? null : Data[index])); if (RowSelectedColor.HasValue) { var bgColorCss = ComponentUtil.GetColorCssClass(RowSelectedColor.Value, "bg-"); var textColorCss = ComponentUtil.GetReverseColorCssClass(RowSelectedColor.Value, "text-"); //先清空相应的 css if (index < 0) { for (int i = 0; i < RowCssList.Count; i++) { RemoveRowCss(i, bgColorCss); RemoveRowCss(i, textColorCss); } return; } if (!RowMultipleSelect) { //如果不能多选行,则点击任意一行则会取消其他行的高亮。 for (int i = 0; i < RowCssList.Count; i++) { RemoveRowCss(i, bgColorCss); RemoveRowCss(i, textColorCss); } } if (index > -1) { if (HasRowCss(index, bgColorCss)) { RemoveRowCss(index, bgColorCss); RemoveRowCss(index, textColorCss); } else { AddRowCss(index, bgColorCss); AddRowCss(index, textColorCss); } } } }