2012-08-15 45 views
0

我是c#程序员。目前,我尝试在datagrid-viewer中的sql数据中添加5列中的3列(fileId,filePath,authorName,fileContent,DateSend) fileId和fileContent列是隐藏的。非常感谢你!datagridview显示从sql数据库中选择的行?

 con = new SqlConnection("Data Source=LEO-PC\\SQLEXPRESS;Initial Catalog = datashare;Integrated Security = True"); 
     cmd = new SqlCommand("select * from maintable", con); 
     con.Open(); 
     SqlDataReader sqlRead; 
     try 
     { 
      sqlRead = cmd.ExecuteReader(); 
      while (sqlRead.Read()) 
      { 
       //Adding to datagrid 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
     finally 
     { 
      con.Close(); 
     } 
+0

如果你是初学者,你可能会检查SQLDataSource控件。 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.sqldatasource.aspx – 2012-08-15 06:30:40

回答

0

要隐藏2个字段在网格中创建一个OnRowCreated事件:

OnRowCreated = “gridView1_RowCreated”

记住使用

SqlDataReader reader = cmd.ExecuteReader();  
gridView1.DataSource = reader; 
到填充网格

和gridview必须有属性必须是AutoGeneretedColumns = "true"

然后创建活动如下:

protected void gridView1_RowCreated(object sender, GridViewRowEventArgs e) 
{ 
      if (e.Row.RowType == DataControlRowType.Header) 
      { 
       for (int i = 0; i < e.Row.Cells.Count; i++) 
       { 
        DataControlFieldCell cell = 
         (DataControlFieldCell) e.Row.Cells[i]; 


        if (cell.ContainingField.HeaderText == "fileId") 
        { 
         e.Row.Cells[i].Visible = false; 
         cell.Visible = false; 
        } 

        if (cell.ContainingField.HeaderText == "fileContent") 
        { 
         e.Row.Cells[i].Visible = false; 
         cell.Visible = false; 
        } 
       } 
      } 

      if (e.Row.RowType == DataControlRowType.DataRow) 
      { 
       for (int i = 0; i < e.Row.Cells.Count; i++) 
       { 
        DataControlFieldCell cell = 
         (DataControlFieldCell) e.Row.Cells[i]; 

        if (cell.ContainingField.ToString() == "fileId") 
        { 
         cell.Visible = false; 
        } 

        if (cell.ContainingField.ToString() == "fileContent") 
        { 
         cell.Visible = false; 
        } 
       } 
      } 
} 

这可能不是最effecient方式,但它使用代码服务宗旨。当列被绑定时,应该能够使用gridview模板隐藏列。

相关问题