数据显示相关

combox加入数据

数据显示相关_第1张图片
List listAuthRole = new List();
listAuthRole.Add(new AuthRole { ID = 0, RoleName = "—请选择—" });
var result = new AuthRoleController().GetAllRoles();
if (result.Status && result.Anything != null)
{
  var role = result.Anything as List;
  if (role != null && role.Count > 0)
  {
    listAuthRole.AddRange(role);
  }
}
comboBoxRoleName.DataSource = listAuthRole;
comboBoxRoleName.DisplayMember = "RoleName";
comboBoxRoleName.ValueMember = "RoleName";

DisplayMember 是绑定显示的数据 如:"管理员,工艺人员,视觉人员,多媒体采集人员"
ValueMember 可以成为名称,也可成为ID,但是一般来说都只绑定ID 这样好处理,也很方便识别。
一般DisplayMember是显示给用户看的
而ValueMember是绑定处理程序标识 给程序员看的
只用DisplayMember就可以将数据显示出来,但使用ValueMember后,等于是给每个数据项都进行了一个ID标识,这样要获取用户选择的值,使用comboBoxRoleName.SelectedValue.ToString()即可,当然直接使用comboBoxRoleName.Text也阔以

  • 有时gridView的数据中不显示顶头的选择小方框,这时要选择某一行数据,直接点击此行即可,点击完后,此行颜色变蓝,要获取此行数据中的某一列数据,使用
    string palletNos = dgvInStock.CurrentRow.Cells["托盘编号"].Value.ToString();
    在方框中填入此列的名字即可
  • 有时在初始化数据显示时会默认一行数据变蓝色,即此行数据被选择,要初始化显示时没有选择,对GridView使用ClearSelection()方法,例:
    dataGridView.ClearSelection();
    注:此方法起作用的前提是初始化页面的一系列方法要写在Shown事件中
    还有一种办法是将ClearSelection()方法写在DataGridView页面的DataBindingComplete事件中。
  • 初始化没有选择后,有时在获取值前要先判断用户是否选中了某行,用以下方法:
if (dataGridView.SelectedRows.Count == 0)
{ 
  lbMes.Text = "请选择一行数据";
  return;
}

ComboBox只显示下拉列表不可编辑其内容

在ConboBox的 属性 设置下的 外观 下的 DropDownStyle 设置为 DropDownList

数据显示相关_第2张图片
DropDownStyle

设置之后运行会发现,虽然不可编辑,但是初始化时是没有数据的,要想初始化显示列表中的第一个数据,使用:
comboBox.SelectedIndex = 0;

TextBox输入自动变为大写或小写

在属性中设置如下:


数据显示相关_第3张图片
TextBox

显示数据的单元格可单选

加入如下语句则可使单击时只选择某个单元格而非整个一行
dataGridView.SelectionMode = DataGridViewSelectionMode.CellSelect;

隐藏某列数据

要隐藏某列数据,一般会直接直接对dataGridView操作,如下:

private void Hide(string str)
{
  var columnID = dataGridView.Columns[str];
  if (columnID != null)
  {
    columnID.Visible = false;
  }
}

此种方法是在界面上隐藏,但是此列数据依旧存在在内存中的dataTable中,要想将此列数据直接从内存中删去,可以直接对dataTable操作,例:
dataGridView.Columns.Remove("数据编号");

单元格数据赋值

有时需要为获取到datagridview中选择项的某一列数据赋值,使用如下方法:
dgvApplyList.CurrentRow.Cells["已发数量"].Value = count;

获取选中的多行数据

for (int i = 0; i < StockCheckDgv.Rows.Count; i++)
{
    if (StockCheckDgv.Rows[i].Cells[0].Value.ToBoollen())
    {
        string packNo = StockCheckDgv.Rows[i].Cells["料袋编号"].Value.ToString();
        packNoList.Add(packNo);
    }
}

或使用项目封装好的现成方法:

List taskNo = StockCheckDgv.GetCheckedStringIDs("任务号");
//后面括号种随意选一列有显示的表列名即可,然后通过 taskNo.count 数量来判断用户选择了哪一行

list去重

detailList.GroupBy(t => t.RackNo).Select(t => t.First()).ToList();

限制输入框只能输入数字

使用输入框TextBox的 KeyPress 事件

private void QTYTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar != '\b' && !Char.IsDigit(e.KeyChar))//只能输入数字和退格
    {
        e.Handled = true;
        lblMsg.Text = "请输入数字!";
        lblMsg.ForeColor = Color.Red;
    }
}

DataGridView显示数据行数

数据显示相关_第4张图片

如上图中显示了10行数据,底下有一片空白不美观,如何自定义一页显示的数据行数呢,可在分页控件的属性PageSize中进行设置,如下图:

数据显示相关_第5张图片

你可能感兴趣的:(数据显示相关)