用treeview关联的datagridview,通过点treeview的节点来查询数据,通过datagridview来显示
在登陆界面中传过来的用户名s_CustomerID来查询相关的信息。
现在的状况是传值,查询一切正常,就是datagridview不显示数据。不知道是哪里错了,麻烦大家看看下面是代码:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;public partial class Detail : System.Web.UI.Page
{    protected void Page_Load(object sender, EventArgs e)
    {    }
    protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
    {
        string s_CustomerID = Request.QueryString["s_CustomerID"];
        SqlConnection con = new SqlConnection("Data Source=WWW-3E180DC04B4;Initial Catalog=Rysm;Integrated Security=True");
        con.Open();
        String str_c_detail = "SELECT * FROM c_detail where CustomerID   ='" + s_CustomerID + "'";
        SqlCommand com_c_detail = new SqlCommand(str_c_detail,con);        DataSet ds = new DataSet();        string Va = TreeView1.SelectedNode.Value;
        Label1.Text = "TreeView1.SelectedNode.Value=  " + Va;
        if (Va == "用户基本信息")
        {
            SqlDataAdapter da = new SqlDataAdapter(com_c_detail);
            da.Fill(ds);
            this.GridView1.DataSource = ds.Tables[0];
            con.Close();
        }
    }
}

解决方案 »

  1.   

    SqlDataAdapter da = new SqlDataAdapter(com_c_detail,con);
      

  2.   

    string s_CustomerID = Request.QueryString["s_CustomerID"];
    这句话打个断点,跟踪下,有没有值。如果有的话,再看看SELECT * FROM c_detail where CustomerID   ='" + s_CustomerID + "'"这句话在sql查询分析器上能不能查出数据来,(+ s_CustomerID 这个变量填你上面string s_CustomerID 的真实值)。
      

  3.   

     this.GridView1.DataSource = ds.Tables[0];
     this.gridview1.databind();
              
    你最好打断点跟下!看下能否查出数据? 
      

  4.   

    问题首先你要确定你da.Fill(ds);
    这个ds.Tables[0]是否有数据, 如果没有数据 那就上面查询的问题了 
      

  5.   

    然后再SqlDataAdapter da.SelectCommand = com_c_detail试试。
      

  6.   


    //既然用适配器的话,连接可以不考虑打开和关闭
    SqlDataAdapter da = new SqlDataAdapter(com_c_detail,con);
      

  7.   

    string s_CustomerID = Request.QueryString["s_CustomerID"]; 
    断点查一下是不是传值的问题,可能性最大
      

  8.   

    你的conn.close 的位置好奇怪
      

  9.   

    this.GridView1.DataSource = ds.Tables[0];
    后面加:
    this.GridView1.DataBind();
    另外conn.close 不能放在If里面,要确保不管在什么情况下都要把连接释放掉
      

  10.   

    沒錯,少了this.GridView1.DataBind();  
      

  11.   

       我看啊,也是少了this.GridView1.DataBind();  
      

  12.   

    绑定有问题吧
    this.GridView1.DataSource = ds.Tables[0].DefaultView;
      

  13.   

    我写的时候感觉很苯的方法,
    //Get letter from DataBase
    DataSet ds_LetterManage = da_P_LetterManage.getLetterManage(strStuId, strSupId);
    DataTable dt_LetterManage = ds_LetterManage.Tables[0];
    DataTable dt_LM = new DataTable();
    DataRow dr_LM;
    //RECEIPT_DAY 也是DataGridView的那一列的DataPropertyName属性值
    dt_LM.Columns.Add("RECEIPT_DAY");          
    dt_LM.Columns.Add("SENDING_DAY");         
    for (int j = 0; j < dt_LetterManage.Rows.Count; j++)
    {
    dr_LM = dt_LM.NewRow();
    dr_LM[0] = dt_LetterManage.Rows[j]["RECEIPT_DAY"].ToString();
    dr_LM[1] = dt_LetterManage.Rows[j]["SENDING_DAY"].ToString();
    dt_LM.Rows.Add(dr_LM);
    }
    this.grdLetterManage.DataSource = dt_LM.DefaultView;