如何使列可见错误

时间:2018-01-24 10:13:44

标签: asp.net gridview

我正在使用网格

我想让列可见错误怎么办?

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

3 个答案:

答案 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;
}