2014-06-16 127 views
0

不填充我有以下ASP GridView控件:GridView控件使用数据绑定

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"> 
      <Columns> 
       <asp:BoundField DataField="TEXT" HeaderText="TEXT" SortExpression="TEXT" /> 
       <asp:BoundField DataField="session_id" HeaderText="session_id" SortExpression="session_id" /> 
       <asp:BoundField DataField="status" HeaderText="status" SortExpression="status" /> 
       <asp:BoundField DataField="command" HeaderText="command" SortExpression="command" /> 
       <asp:BoundField DataField="cpu_time" HeaderText="cpu_time" SortExpression="cpu_time" /> 
       <asp:BoundField DataField="total_elapsed_time" HeaderText="total_elapsed_time" SortExpression="total_elapsed_time" /> 
       <asp:BoundField DataField="dbname" HeaderText="dbname" ReadOnly="True" SortExpression="dbname" /> 
       <asp:BoundField DataField="user_running_query" HeaderText="user_running_query" SortExpression="user_running_query" /> 
      </Columns> 
     </asp:GridView> 

在后面的代码我有:

protected void Page_Load(object sender, EventArgs e) 
     { 
      using (Repository.SqldbAllQueries()) 
      { 
       GridView1.DataBind(); 
      }  
     } 

而且我的仓库类包含:

public static class Repository 
    { 
     public static SqlDataReader SqldbAllQueries() 
     { 
      SqlConnection sqlConnection1 = new SqlConnection("Data Source=sqldb;Initial Catalog=ReportServer;Integrated Security=True"); 
      SqlCommand cmd = new SqlCommand(); 
      SqlDataReader reader; 

      cmd.CommandText = @"SELECT sqltext.TEXT,req.session_id,req.status,req.command,req.cpu_time, 
           req.total_elapsed_time,DB_NAME(req.database_id) as dbname,s.login_name as user_running_query 
           FROM sys.dm_exec_requests req 
           CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext 
           INNER JOIN sys.dm_exec_sessions s ON req.session_id = s.session_id"; 

      cmd.CommandType = CommandType.Text; 
      cmd.Connection = sqlConnection1;    
      sqlConnection1.Open(); 
      reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); 
      return reader; 
     }   
    } 

我试图捕获每个当前正在运行的查询在SQL数据库和输出在我的ASP页面作为网格视图使用数据库nd方法,代码会生成并运行,但是gridview不会在页面上显示。我已经通过代码,我可以看到reader包含行,但我似乎错过了这里的东西,因为它们没有被添加到gridview,任何人都可以看到问题?

+0

'DataBind'之前你需要设置'DataSource'属性 – Grundy

回答

1

尝试页面加载

GridView1.DataSource = Repository.SqldbAllQueries(); 
GridView1.DataBind(); 
+0

GridView1在版本库的上下文中不存在 – JsonStatham

+0

试试更新的代码 – KarthikManoharan

1

这一项,

试试这个代码。其实,如果你退回读者,你可能会得到一个例外。

protected void Page_Load(object sender, EventArgs e) 
{ 
    DBAccess db = new DBAccess(); 
    db.FetchData(BindData); 
} 

private void BindData(SqlDataReader reader) 
{ 
    DataGridView1.DataSource = reader; 
    DataGridView1.DataBind(); 
} 

而这里DBACCESS类(类似于库类)

public void FetchData(Action<SqlDataReader> bindMethod) 
{ 
    using (SqlConnection sqlConnection = new SqlConnection("ConnectionString")) 
    { 
     sqlConnection.Open(); 
     using (SqlCommand sqlCommand = new SqlCommand("Query", sqlConnection)) 
     { 
      bindMethod.Invoke(sqlCommand.ExecuteReader(CommandBehavior.CloseConnection)); 
     } 
    } 
} 

希望这个代码可以帮助。