如何隐藏 DataGrid 自动生成的列中的 某一列
如何隐藏 DataGrid 自动生成的列中的 某一列
比如我有个 DataGrid ,数据绑定方式是自动生成列,我想要隐藏其中一列,但这列的数据又是我需要的,所以不能采用不绑定的方式
还有我试过用 this.dg_InStore.Columns[0].Visible = false;
的方式隐藏,系统提示报错, 用自动生成的方式绑定的grid 的 Columns.count是0
------解决方案-------------------- #region 动态创建datagrid模板列
public class MyDataGridTemplate : System.Web.UI.ITemplate
{
ListItemType _litType;
object _objData;
public MyDataGridTemplate(ListItemType litType, object objData)
{
_litType = litType;
_objData = objData;
}
public void InstantiateIn(System.Web.UI.Control container)
{
Literal ltr = new Literal();
ltr.DataBinding += new EventHandler(this.OnDataBinding);
TextBox txt = new TextBox();
switch(_litType)
{
case ListItemType.Header:
ltr.Text = " <b> " + _objData.ToString() + " </b> ";
container.Controls.Add(ltr);
break;
case ListItemType.Item:
ltr.Text = _objData.ToString();
container.Controls.Add(ltr);
break;
case ListItemType.EditItem:
container.Controls.Add(txt);
break;
case ListItemType.Footer:
ltr.Text = " <i> " + _objData.ToString() + " </i> ";
container.Controls.Add(ltr);
break;
}
}
public void OnDataBinding(object sender, EventArgs e)
{
Literal l = (Literal) sender;//LiteralControl发送绑定请求
DataGridItem container = (DataGridItem) l.NamingContainer;
l.Text = ((DataRowView)container.DataItem)[l.Text].ToString();//绑定stuname字段
}
}
#endregion
------解决方案--------------------//创建动态模板列
//------------------------------------------------+
for (int x = 0 ; x <= MasterDt.Columns.Count-1 ; x++)
{
TemplateColumn tc;
tc = new TemplateColumn();
tc.HeaderText = MasterDt.Columns[x].Caption;
if (MasterDt.Columns[x].Caption == "UpDateUserID " || MasterDt.Columns[x].Caption == "UpDateRecordID ")
{
//如果是编号列,则需要隐藏
tc.Visible=false;
}
tc.ItemTemplate = new MyDataGridTemplate(ListItemType.Item, MasterDt.Columns[x].Caption);// " <%# DataBinder.Eval(Container,\ "DataItem. " + MasterDt.Columns[x].Caption + "\ ")%> ");
dg_data.Columns.Add(tc);
}
//------------------------------------------------+