我正在使用网格
我想让列可见错误怎么办?
Issue Date Maturity Status ISIN Price
25/01/2013 01/01/2020 Issued XS0879579182 88
06/02/2018 02/01/2020 In Sub XS1515113535 99
31/01/2018 03/01/2020 Traded XS5445656466 87
18/01/2018 04/01/2020 Issued XS0254521554 100
20/01/2018 05/01/2020 Issued XS5458614653 98
19/01/2018 06/01/2020 Issued XS2375645421 97
12/01/2015 07/01/2020 Issued XS4158674165 92
答案 0 :(得分:0)
如果它的asp.net网格不仅仅是这样做,在你的代码中删除ToString()。并且如果可能的话,使用数据绑定事件(它是可选的,如果不起作用则使用它)
protected void gridView_DataBound(object sender, EventArgs e)
{
int CompanyIDIndex = 0;//index of your column
this.grdClients.Columns[CompanyIDIndex].Visible = false;
}
或试试这个
((DataControlField)gridView.Columns
.Cast<DataControlField>()
.Where(fld => (fld.HeaderText == "CompanyID"))
.SingleOrDefault()).Visible = false;
答案 1 :(得分:0)
你的行
grdClients.Columns["CompanyID"].ToString().Visible = false;
没有多大意义。
.ToString()
将您的列对象转换为该字符串表示形式。我不确定它会产生什么,但它并不重要:你不能像这样使字符串可见/不可见,它没有Visible
属性。
您需要在列对象本身上设置Visible:
grdClients.Columns["CompanyID"].Visible = false;
在执行此操作之前,您可能还需要DataBind您的gridview,具体取决于您是否在标记中手动添加了列,或者它们是否基于数据源自动生成。
答案 2 :(得分:0)
如果未自动生成网格列,则可以在标记中将Visible属性设置为false。没有必要编写代码使其不可见。
<asp:BoundField DataField="CompanyID" HeaderText="CompanyID" Visible="False" />
如果出于某种原因,您仍然希望在代码隐藏中执行此操作,那么只需使用以下代码替换您发布的代码即可。您需要在下面的代码中设置变量companyIdColumnIndex
(我假设它是5,但根据您的方案/标记,您应该设置此值)。
private void BindClients(String Search) {
DBContext dbcontext = new DBContext();
SqlParameter[] Param = {
new SqlParameter("@Search", Search),
};
DataSet ds = dbcontext.GetDataset("Proc_getCompanies ", Param);
if (ds != null && ds.Tables.Count > 0) {
if (ds.Tables[0].Rows.Count > 0) {
grdClients.DataSource = ds.Tables[0];
grdClients.DataBind();
//use if code below to hide the column
if (grdClients.Columns.Count > 0) {
int companyIdColumnIndex = 5; //set this variable according to your sceanrio
grdClients.Columns[companyIdColumnIndex].Visible = false;
}
//grdClients.Columns["CompanyID"].ToString().Visible = false;
}
else grdClients.DataSource = null;
}
else grdClients.DataSource = null;
}