gridview 中有一个按钮,一些绑定列
gridview 绑定代码如下
     GridView1.DataSource = bll.GetList(productNo, pass, makeDate);
        GridView1.DataBind();
        GridView1.Columns[0].Visible = false; //隐藏列
        GridView1.Columns[1].Visible = false;
GridView1_RowCommand事件中代码如下: int index=Convert.ToInt16(e.CommandArgument);
int pass = Convert.ToInt16(GridView1.Rows[index].Cells[1].Text); //第二次点击时 这行出错,这里的值变成空了,
...一些数据库操作
BindData(); //重新绑定gridview为什么第一次点击的 正常,第二次就出错了
请问怎么回事?

解决方案 »

  1.   

    怎么没有ispostback
    具体点 啊
      

  2.   

    你可以直接把
    CommandArgument 设置成你要的值.    <asp:TemplateColumn>
            <ItemTemplate>
                <asp:Button ID="btn1" runat="server" Text="Click" CommandArgument='<%#Eval("字段")%>' />
            </ItemTemplate>
        </asp:TemplateColumn>
      

  3.   


    to   hm8030(昨天的梦未醒,今天梦已开始) 
    我绑定的代码是这样写的啊 
        private void BindData()
        {
            
           
            houdaoBLL bll = new houdaoBLL();        GridView1.DataSource = bll.GetList();
            GridView1.DataBind();
            GridView1.Columns[0].Visible = false;
            GridView1.Columns[1].Visible = false;
        }
    这样是不是就是绑定成功后才隐藏啊 to cpp2017(慕白兄)
    我要绑定的是行的索引 在后台写有区别吗
      

  4.   

    这样不行的,Gridview是要先绑定,再OnRowDataBound
      protected void gvExamType_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow || e.Row.RowType == DataControlRowType.Header)
            {
                e.Row.Cells[0].Visible = false;
            }
        }