界面上有一个BUTTON,两个gridview:gv1,gv2;
gv1查询数据库,得到DataTable, table1然后databind这个table1..
我在gv1的点击行事件中,再动态创建DataTable,table2;然后gv2再databind这个table2.
可发现这个gv2不显示,请问这是怎么回事啊?
如果我直接单击BUTTON时,gv2就会显示数据。
有点乱,不知我说明白了没?
现在是动态创建DataTable:table2,并databind到gv2上的代码:void gridViewBind()
    {
        DataTable table = new DataTable();
        DataColumn colStart = new DataColumn("start", typeof(string));
        DataColumn colStop = new DataColumn("length", typeof(string));
        DataColumn colPath = new DataColumn("path", typeof(string));        table.Columns.Add(colStart);
        table.Columns.Add(colStop);
        table.Columns.Add(colPath);        DataRow row = table.NewRow();
        row["start"] = "aa";
        row["length"] = "bb";
        row["path"] = "cc";
        table.Rows.Add(row);        GridView2.DataSource = table;
        GridView2.DataBind();
    }

解决方案 »

  1.   

    有可能你没调用这个方法还有个可能是ispostback没处理点BUTTON 的时候 它有重新加载了你把代码都放到if(!ispostback)
    {
    }
      

  2.   


    把代码放到if(!ispostback)
    {
    }
    确实能显示,可问题是我现在不能放在这里,我要在另一个gridview的单击行事件中,调用这些代码,请问该如何解决啊?
      

  3.   

    先从第一个gridview:gv1在databind时说起吧。。
    <asp:GridView ID="DG_Record" OnRowDataBound="DG_Record_RowDataBound" >//为gv1的每行添加单击行事件
     protected void DG_Record_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {            //鼠标移动到每项时颜色交替效果
                e.Row.Attributes.Add("OnMouseOut", "this.style.backgroundColor='White';this.style.color='#003399'");
                e.Row.Attributes.Add("OnMouseOver", "this.style.backgroundColor='#6699FF';this.style.color='#8C4510'");            //单击/双击 事件
                DataRowView row = (DataRowView)e.Row.DataItem;                      
                e.Row.Attributes.Add("onclick", "fnOnClickGridView(" + row["recordingsid"] + ");return false;");
                e.Row.Attributes.Add("runat", "server");            //设置悬浮鼠标指针形状为"小手"
                e.Row.Attributes["style"] = "Cursor:hand";
            }    }//下面是在javascript中的代码,就是上面的函数fnOnClickGridView;//单击grid view
    function fnOnClickGridView(recordingsid)
    {
    //问题:清除cache
    //解决:http://blog.csdn.net/norsd/archive/2009/04/27/4128677.aspx
        var xml2Http
        xml2Http = createXMLHttpRequest();
      
           
        var url = "Record.aspx?recordingsid="+recordingsid;
       
        xml2Http.open("GET",url,true);
        
        xml2Http.setRequestHeader("No-Cache","1");    
        xml2Http.setRequestHeader("Pragma","no-cache");    
        xml2Http.setRequestHeader("Cache-Control","no-cache");    
        xml2Http.setRequestHeader("Expire","0");    
        xml2Http.setRequestHeader("Last-Modified","Wed, 1 Jan 1997 00:00:00 GMT");    
        xml2Http.setRequestHeader("If-Modified-Since","-1");    
        
        xml2Http.send(null);   
     
    }在执行了前台的javascript函数后,现在又转到服务器上的C#函数:protected void Page_Load(object sender, EventArgs e)
    {
            if (!IsPostBack)
            {
                   try
                {
                    if (Request.QueryString["recordingsid"].ToString() != string.Empty)
                    {
                        gridViewBind(); //这就是在动态创建一个datatable,并databind到gv2上
                        return;
                     }
                 } catch()....
            }
    }
      

  4.   

    说明数据读到了,可能是在rowcommand事件里没有处理好。