There are several ways to hide a column:1) You can use your DataSet's ColumnMapping property to hide a column.
// Creating connection and command sting
string conStr = @"Provider=Microsoft.JET.OLEDB.4.0;data source=C:\northwind.mdb";
string sqlStr = "SELECT * FROM Employees";
// Create connection object
OleDbConnection conn = new OleDbConnection(conStr);
// Create data adapter object
OleDbDataAdapter da = new OleDbDataAdapter(sqlStr,conn);
// Create a dataset object and fill with data using data adapter's Fill method
DataSet ds = new DataSet();
da.Fill(ds, "Employees");
// Hide the column and attach dataset's DefaultView to the datagrid control
ds.Tables["Employees"].Columns["LastName"].ColumnMapping = MappingType.Hidden;
dataGrid1.DataSource = ds.Tables["Employees"];
2) Another way to hide a column is to set its width to zero. Check out the FAQ How do I set the width of a column in my DataGrid?.3) Another way to hide a column is to create a custom table style, and as you add columnstyles to your tablestyle, omit the column you want hidden. Check out the FAQ How do I add an unbound column in my bound DataGrid? to see how to create a custom table style. 见http://www.syncfusion.com/FAQ/WinForms/FAQ_c44c.asp#q708q
// Creating connection and command sting
string conStr = @"Provider=Microsoft.JET.OLEDB.4.0;data source=C:\northwind.mdb";
string sqlStr = "SELECT * FROM Employees";
// Create connection object
OleDbConnection conn = new OleDbConnection(conStr);
// Create data adapter object
OleDbDataAdapter da = new OleDbDataAdapter(sqlStr,conn);
// Create a dataset object and fill with data using data adapter's Fill method
DataSet ds = new DataSet();
da.Fill(ds, "Employees");
// Hide the column and attach dataset's DefaultView to the datagrid control
ds.Tables["Employees"].Columns["LastName"].ColumnMapping = MappingType.Hidden;
dataGrid1.DataSource = ds.Tables["Employees"];
2) Another way to hide a column is to set its width to zero. Check out the FAQ How do I set the width of a column in my DataGrid?.3) Another way to hide a column is to create a custom table style, and as you add columnstyles to your tablestyle, omit the column you want hidden. Check out the FAQ How do I add an unbound column in my bound DataGrid? to see how to create a custom table style. 见http://www.syncfusion.com/FAQ/WinForms/FAQ_c44c.asp#q708q
解决方案 »
- 求一个正则
- foreach 循环完毕以后程序自动关闭?
- 关于SharePoint Designer 开发 工作流
- 微软的webcast怎么不能下载了?
- DATABINGING问题
- .NET方面的什么书比较好(C#)
- 为什么总是显示:未将对象引用设置到对象的实例
- C#如何获取将要下载的URL文件的大小
- 一网站的结构是login画面->search画面->result画面,我的C#程序放在Client端,需要直接访问result画面,但要求必须login,如何处理呢?
- c#中处理xml文档的问题
- 在德文或者日文的.net2003里边如果想输入中文,不能保存,并且编译时报告错误,该怎么办阿???(晚上给分)
- 字符转换问题,谢谢
public void Init_Form(DataTable dt)
{
// TODO: 添加 gdzc_addition.Init_From 实现
AdditionBLL getdata=new AdditionBLL(); //Grid的数据连接
if(dt==null || dt.Rows.Count<1)
{
try
{ //GlobleInfo.SystemInfo.PartId
dt=getdata.GetMInfos(TxtID.Text);
}
catch(Exception err)
{
CommonMessage.ShowTipMsg("提示",ProcessException.ErrTxt(err));
return;
}
}
Grid.DataSource = dt;
DataGridTableStyle tableStyle = new DataGridTableStyle();
tableStyle.MappingName =dt.TableName;
dt.Columns["additionId"].Unique=true; DataColumn dc=new DataColumn();
dc.DataType=typeof(bool);
dc.DefaultValue=false;//默认值false
dc.ColumnName="del";
dt.Columns.Add(dc); //添加新列删除列
dt.AcceptChanges(); DataGridBoolColumn chebox = new DataGridBoolColumn(); //设第一列为删除列
chebox.HeaderText = "";
chebox.MappingName =dt.Columns["del"].ColumnName;
chebox.AllowNull=false;
chebox.TrueValue=true;
chebox.FalseValue=false;
chebox.NullValue=true;
chebox.Width=20;
//tableStyle.PreferredColumnWidth=60;
//tableStyle.AlternatingBackColor = Color.LightGray; //设定交替行的背景色
tableStyle.GridColumnStyles.Add(chebox);
DataGridTextBoxColumn aColumnTextColumn = new DataGridTextBoxColumn();
aColumnTextColumn.HeaderText =" 编号*" ; //设置列标题
aColumnTextColumn.Width=50;
aColumnTextColumn.TextBox.MaxLength=2;
aColumnTextColumn.TextBox.KeyPress+=new KeyPressEventHandler(TextBox_KeyPress);
aColumnTextColumn.MappingName = dt.Columns["additionId"].ColumnName ; //设置列名
aColumnTextColumn.TextBox.KeyPress+=new KeyPressEventHandler(TextBox_KeyPress);
//tableStyle.AlternatingBackColor = Color.AliceBlue ; //LightGray;设定交替行的背景色
tableStyle.GridColumnStyles.Add(aColumnTextColumn); //增加一种自定义的column风格
//aColumnTextColumn.TextBox.AutoSize = true;
//tableStyle.PreferredColumnWidth =60;
//tableStyle.PreferredColumnWidth = aColumnTextColumn.TextBox.Width; //列宽根据数据内容自适应调整tableStyle.PreferredColumnWidth =0//隐藏
aColumnTextColumn.NullText = "";
DataGridTextBoxColumn additionName = new DataGridTextBoxColumn();
additionName.HeaderText =" 名称*" ; //设置列标题
additionName.MappingName = dt.Columns["additionName"].ColumnName ; //设置列名
additionName.Width=100;
additionName.TextBox.MaxLength=10;
additionName.TextBox.KeyPress+=new KeyPressEventHandler(TextBox_KeyPress);
//tableStyle.AlternatingBackColor = Color.AliceBlue ; //设定交替行的背景色
tableStyle.GridColumnStyles.Add(additionName); //增加一种自定义的column风格
//tableStyle.PreferredColumnWidth =90;
additionName.NullText = ""; DataGridTextBoxColumn additionMode = new DataGridTextBoxColumn();
additionMode.HeaderText =" 型号" ; //设置列标题
additionMode.MappingName = dt.Columns["additionMode"].ColumnName ; //设置列名
additionMode.Width=80;
additionMode.TextBox.MaxLength=10;
additionMode.TextBox.KeyPress+=new KeyPressEventHandler(TextBox_KeyPress);
//tableStyle.AlternatingBackColor = Color.AliceBlue ; //设定交替行的背景色
tableStyle.GridColumnStyles.Add(additionMode); //增加一种自定义的column风格
//tableStyle.PreferredColumnWidth =80;
additionMode.NullText = ""; DataGridTextBoxColumn additionCount = new DataGridTextBoxColumn();
additionCount.HeaderText ="数量* " ;
additionCount.Alignment=HorizontalAlignment.Right;
additionCount.MappingName = dt.Columns["additionCount"].ColumnName ; //设置列名
additionCount.Width=60;
additionCount.TextBox.MaxLength=10;
additionCount.TextBox.KeyPress+=new KeyPressEventHandler(TextBox_KeyPress);
//tableStyle.AlternatingBackColor = Color.AliceBlue ; //设定交替行的背景色
tableStyle.GridColumnStyles.Add(additionCount); //增加一种自定义的column风格
//tableStyle.PreferredColumnWidth =60;
additionCount.NullText = ""; DataGridTextBoxColumn additionUnit = new DataGridTextBoxColumn();
additionUnit.HeaderText =" 单位" ; //设置列标题
additionUnit.MappingName = dt.Columns["additionUnit"].ColumnName ; //设置列名
additionUnit.Width=50;
additionUnit.TextBox.MaxLength=10;
additionUnit.TextBox.KeyPress+=new KeyPressEventHandler(TextBox_KeyPress);
//tableStyle.AlternatingBackColor = Color.AliceBlue ; //设定交替行的背景色
tableStyle.GridColumnStyles.Add(additionUnit); //增加一种自定义的column风格
//tableStyle.PreferredColumnWidth =60;
additionUnit.NullText = ""; DataGridTextBoxColumn additionPrice = new DataGridTextBoxColumn();
additionPrice.HeaderText ="单价(元)* " ;
additionPrice.Alignment=HorizontalAlignment.Right;
additionPrice.MappingName = dt.Columns["additionPrice"].ColumnName ; //设置列名
additionPrice.Width=75;
additionPrice.TextBox.MaxLength=9;
additionPrice.TextBox.KeyPress+=new KeyPressEventHandler(TextBox_KeyPress);
//tableStyle.AlternatingBackColor = Color.AliceBlue ; //设定交替行的背景色
tableStyle.GridColumnStyles.Add(additionPrice); //增加一种自定义的column风格
//tableStyle.PreferredColumnWidth =80;
additionPrice.NullText = "";
tableStyle.AllowSorting=false;
tableStyle.RowHeadersVisible=true;
tableStyle.RowHeaderWidth=10;
Grid.TableStyles.Add(tableStyle);
}
ds.Tables[0].Columns.RemoveAt(1);
ds.Tables[0].Columns.RemoveAt(2);
ds.AcceptChanges();就ok了,注意:如上的这3条语句,第二句实际上是删除原来的第4条记录
// Hide the column and attach dataset's DefaultView to the datagrid control
ds.Tables["Employees"].Columns["LastName"].ColumnMapping = MappingType.Hidden;
这个不行吗?好久没用了,记得在asp.net下好像是可以的!winApp的DataGrid我没用过!
方法是对的!
其实晴海的办法就挺好的。宽度设为0。
这样可以避免一种情况:就是如果允许重新排序的话,会找不到对应行,只需要把主键列放到里面,宽度设为0,用(类型) key=(类型)dg[dg.CurrentRowIndex,主键所在列];就可以取出对应主键值。当然就可以找到对应行了。
DataGrid1.Columns[i].Visible = false;i为你要隐藏的列的的index,从0开始。
/隐藏某列
// Hide the column and attach dataset's DefaultView to the datagrid control
ds.Tables["Employees"].Columns["LastName"].ColumnMapping = MappingType.Hidden;
这样就ok了
{
if 需要隐藏
{
DataGrid1.Columns[i].Visibled=false;
}
}
datagridtextboxColumn.Width = 0
ds.Tables["Employees"].Columns["LastName"].ColumnMapping = MappingType.Hidden; 2.将其,列宽设为:0
如果是这样,那你就可以先添加几个帮定列,然后把这几列固定到数据库中你要显示的字段上,就可以了。
添加帮定列在设置属性框中。
在ItemDataBound事件中设定
private void Grid_ItemDataBound(object sender, DataGridItemEventArgs e)
{
e.Item.Cells[0].Visible=false; //设定第0列隐藏
}