有关以自己填充的datatable作为datagridview的数据源怎么实现combobox问题

fengzhongsanfa 2009-04-13 01:06:04
我想做一个串口配置界面窗口,该窗口有一个datagridview控件,该控件的数据源是我自己创建的一个datatable,自己添加了两条记录:
串口功能(string) 串口选择(string) 波特率(int) 是否打开串口(bool)
“用户口” null null(不知道整形 FALSE
null怎么表示??)
“调试口” null null FALSE
其实我的意思就是想用一个datatale来保存我的设置记录,当第一次调用配置界面时,两条记录应该是只有第一列的串口功能有值,后面的都空,需要你去修改选择,修改之后的记录保存到datatable中不需要增减记录,只需要修改,当下次再调用配置串口界面窗口时datagridview就会调用datatale的记录显示上次修改保存的记录

请教各位我这个怎么实现,给点参考代码最好:
主要问题1.我想实现串口选择列为comboboxcolumn的形式,即为下拉列表选项的形式如这个计算机上只有com1,com2,com3,则下拉列表选项为com1,com2,com3三项,我选了com1为第一条记录用户口的 串口选择值(此处为com1),则在第二条记录调试口选择串口选择列时该列的下拉框选项只剩com2,com3,
2,修改完datagridview数据记录会自动更新到datatable中么要不要写代码保存更新?
希望帮忙给做个例子源码或者指点下关键的代码和事件??感谢!!
...全文
404 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
h475410885 2010-02-27
  • 打赏
  • 举报
回复
每一个布局都内置有一个或多个{@link Ext.Container}的元素,而在Ext中,ContainerLayout是 ContainerLayout没有任何的外观表示,只是为特定功能的容器作为布局提供基础性的逻辑。 应通过继承该类的方式使用,一般很少通过关键字new直接使用。



@class Ext.layout.FitLayout

@extends Ext.layout.ContainerLayout



这是包含单个项布局的基类,这种布局会在容器上自动铺开以填充整个容器。 应通过继承此类或设置{@link Ext.Container#layout}的配置layout:'fit' 的方式创建,一般很少通过关键字new直接使用。



FitLayout没有直接的配置选项(不同于继承) 要采用FitLayout填充容器的面板,只需设置容器的layout:'fit'和加入一个面板。 即使容器指定了多个面板,只会渲染第一个面板。用法举例:

var p = new Ext.Panel({
title: 'Fit Layout',
layout:'fit',
items: {
title: '内层面板',
html: '<p>这是内层面板的内容</p>',
border: false
}
});
zhaigates 2009-05-20
  • 打赏
  • 举报
回复
很好,学习
wuyq11 2009-04-13
  • 打赏
  • 举报
回复
DataGridViewColumn column column = new DataGridViewCheckBoxColumn();
column.DataPropertyName = "GoodG";
column.Name = "";
dataGridView1.Columns.Add(column);
编辑数据后更新
参考
CeShenBeiWang 2009-04-13
  • 打赏
  • 举报
回复
up
wartim 2009-04-13
  • 打赏
  • 举报
回复
还有,如果你不想自动增加行和不允许用户点击三角箭头选择整行后用delete键删行就加
dataGridView1.AllowUserToAddRows = false;
dataGridView1.AllowUserToDeleteRows = false;
wts_net 2009-04-13
  • 打赏
  • 举报
回复
wartim 2009-04-13
  • 打赏
  • 举报
回复
看在100分的面子上

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication17
{
public partial class Form1 : Form
{
DataTable DT = null;

public Form1()
{
InitializeComponent();

CreateDataColumns();
CreateGridColumns();
dataGridView1.DataSource = DT;
}

void CreateDataColumns()
{
DT = new DataTable();

DT.Columns.AddRange(new DataColumn[]{new DataColumn("Using"),new DataColumn("Select"),
new DataColumn("Rate",typeof(int)),new DataColumn("IsOpen",typeof(int))});
}

void CreateGridColumns()
{
dataGridView1.Columns.Clear();
DataGridViewTextBoxColumn C1 = new DataGridViewTextBoxColumn();
C1.HeaderText = "串口功能";
C1.DataPropertyName = "Using";
dataGridView1.Columns.Add(C1);
DataGridViewComboBoxColumn C2 = new DataGridViewComboBoxColumn();
C2.HeaderText = "串口选择";
C2.Items.AddRange(new Object[] { "COM1", "COM2", "COM3" });
C2.DataPropertyName = "Select";
dataGridView1.Columns.Add(C2);
DataGridViewTextBoxColumn C3 = new DataGridViewTextBoxColumn();
C3.HeaderText = "波特率";
C3.ValueType = typeof(Nullable<int>);
C3.DataPropertyName = "Rate";
dataGridView1.Columns.Add(C3);
DataGridViewCheckBoxColumn C4 = new DataGridViewCheckBoxColumn();
C4.HeaderText = "是否打开串口";
C4.TrueValue = 1;
C4.FalseValue = 0;
C4.IndeterminateValue = 0;
C4.DataPropertyName = "IsOpen";
dataGridView1.Columns.Add(C4);
}

void button1_Click(object sender, EventArgs e)
{
dataGridView1.EndEdit();
MessageBox.Show("取消了编辑状态,最后的修改也更新上去了");
dataGridView1.DataSource = null;
MessageBox.Show("不绑定");
CreateGridColumns();
dataGridView1.DataSource = DT;
MessageBox.Show("再次绑定,可以看见值已经存在数据表里并又绑定到datagridview了");
}
}
}
ximi82878 2009-04-13
  • 打赏
  • 举报
回复
不建议用comboboxcolumn,在datagridview里用comboboxcolumn超麻烦
gomoku 2009-04-13
  • 打赏
  • 举报
回复
在DataGridView.EditingControlShowing事件中,判断并填充一下Combobox的Items就可以了。
冰凝瞬间1986 2009-04-13
  • 打赏
  • 举报
回复
虽然很想帮你,但不知道你说了以大串是什么意思...
much0726 2009-04-13
  • 打赏
  • 举报
回复
模版列
Learn-anything 2009-04-13
  • 打赏
  • 举报
回复
sf先

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧