none
莫名异常,无法获取自定义网页中的GridView.Rows信息 RRS feed

  • 问题

  • 情况如下:
    我用GridView 展示了一些信息列表,然后通过按钮事件,触发一些对GirdViewRow的操作。
    页面运行后,GridView正常展示了多条信息,但是当我按按钮后,事件无法正常获取GirdViewRow信息,不管是用GridView1_RowCommand方式、还是GridView1_Click方式,都不正常。
    比如页面上gridview显示了多条信息,而我在事件中输入 GridView1.rows.count, 得到的总是零,这就使得我的foreach-gridview1.rows 总是不成功。
    看起来好像,GriView失去了数据源。

    还有如下备注:
    1、程序代码在没有嵌入到MSCRM4.0中时,在本机中是正常无误的,但是编译成dll然后加入MSCRM,就变成现在的情况。
    2、系统没有任何报错

    页面运行后图片

    .cs 关键代码

    public partial class showAllCostDetail : System.Web.UI.Page
    {
        private string _refundid="";
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                List<cctv_costdetail> myCostDetail = createEntity.queryMyCostDetail(1);
                GridView1.DataSource = myCostDetail;
                GridView1.DataBind();
                _refundid = Request.QueryString["refundid"];            
            } 
        }
    
        //protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 同下,没效果
    
       protected void Bt_submit_Click(object sender, EventArgs e)
        {
            int jj = 0;
            foreach (GridViewRow oneRow in this.GridView1.Rows)
            {
                ++jj;
                if (oneRow.RowType == DataControlRowType.DataRow)
                {
                    CheckBox selectOne = (CheckBox)oneRow.FindControl("chkbox");
                    if (selectOne.Checked)
                    {
                        HiddenField hf = (HiddenField)oneRow.FindControl("HiddenKeyId");
                        if (_refundid != "" && _refundid != null)
                        {
                            //createEntity.updateCostDetailByRefundid(_refundid, hf.Value);一个处理函数,
                            Response.Write("执行过--");//我设置用来看结果的
                        }
                        else
                        {
                            Response.Write("kong");
                        }
                    }
                    else
                    {
                        Response.Write("没选中");
                    }
                }
                else
                {
                    Response.Write("not datarow");
                }
    
            }
    
            Response.Write("<script type='text/javascript' >window.alert('"+jj.ToString()+"费用明细添加成功3!');</script>");
    

     

     

     

     


    2011年11月7日 3:32

答案

  • 原来是一个简单到不能再简单的问题了,但是由于对EnableViewState没在意过,所以出现了这次错误。

    把EnableViewState=true 就OK了

    结贴

    2011年11月7日 4:00