combox加入数据
List<AuthRole> listAuthRole = new List<AuthRole>();
listAuthRole.Add(new AuthRole { ID = 0, RoleName = "—请选择—" });
var result = new AuthRoleController().GetAllRoles();
if (result.Status && result.Anything != null)
{
var role = result.Anything as List<AuthRole>;
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
设置之后运行会发现,虽然不可编辑,但是初始化时是没有数据的,要想初始化显示列表中的第一个数据,使用:
comboBox.SelectedIndex = 0;
TextBox输入自动变为大写或小写
在属性中设置如下:
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<string> 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显示数据行数
如上图中显示了10行数据,底下有一片空白不美观,如何自定义一页显示的数据行数呢,可在分页控件的属性PageSize中进行设置,如下图:
网友评论