我在这里给ViewState赋值:
protected void gviewJd_record_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
    {
        ViewState["Code_id"] = gviewJd_record.Rows[gviewJd_record.SelectedIndex].Cells[2].Text;
        
        //判断目前是否处于编辑模式(EditIndex为1),则禁止选择换行
        if (gviewJd_record.EditIndex != -1)
        {
            gviewJd_record.SelectedIndex = -1;
            e.Cancel = true;
            Literal txtMsg = new Literal();
            txtMsg.Text = "<script>alert('编辑模式下禁止选择换行!')</script>";
            Page.Controls.Add(txtMsg);
        }
        
    }在这里取值:protected void gviewJd_record_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        
        if (e.CommandName == "New")
        {
            string recordJd_name = ((DropDownList)gviewJd_record.FooterRow.FindControl("NewJd_name")).SelectedValue;
            if (recordJd_name.Trim() == "")
            {
                ErrorMsg.Text = "请输入检查类型!";
                return;
            }
            string recordCheck_date = ((TextBox)gviewJd_record.FooterRow.FindControl("NewCheck_date")).Text;
            if (recordCheck_date.Trim() == "")
            {
                ErrorMsg.Text = "请输入检查日期!";
                return;
            }
            string code_idd="";
            if (ViewState["code_id"] != null)
            {
                code_idd = (string)ViewState["code_id"];
            }
            ((TextBox)gviewJd_record.FooterRow.FindControl("NewCode_id")).Text = code_idd;实际上code_idd是空的,为什么?

解决方案 »

  1.   

    ViewState["Code_id"] = gviewJd_record.Rows[gviewJd_record.SelectedIndex].Cells[2].Text;
    if (ViewState["code_id"] != null)
    应该是Code_id把
    大小写不一样
      

  2.   

    SelectedIndexChanging?这事件没用过在里面设置断点,看viewstate有没赋到值
      

  3.   

    你先调试一下看看程序是否走到了,再判断viewstate的值是否存在
      

  4.   

    SelectedIndexChanging事件中能取到值
      

  5.   

    我不用SelectedIndexChanging取,就给赋一个值,例如: string str="5555555";
    它也过不来
      

  6.   

    你现在是对ViewState不信任还是对你的业务流程不信任如果对ViewState不信任,那去建一个简单页面来测试,不要包含业务逻辑如果对业务逻辑不信任,那去跟踪调试一下看业务走向心里有底了,解决问题来会得心应手一点说多了,见谅看你发了几个帖子
      

  7.   

    是啊,就是在不同的函数中传变量才用ViewState的
    如果在同一函数中就不存在这问题。
    关健是不同函数中,走个变量怎么这样难?谢谢大家!这个问题搞了几天了。C#也太严谨了!!!!
      

  8.   

    虽然是二个事件,但是在同一页面,就是存在回发的问题,用ViewState应该是没问题的。
    作用域是可以的吧?
      

  9.   

    是不是在page_load里面没有加Page.isPostback,并且在这里面有关于这个viewstate的操作?
      

  10.   

    是的,在GridView中先是选择行,在Footer中输入后按存储
      

  11.   

    如果SelectedIndexChanged  那么ViewState就起作用。例如ViewState["Code_id"]="55555"就传过去了。但如换成ViewState["Code_id"]=gviewJd_record.Rows[gviewJd_record.SelectedIndex].Cells[2].Text;这一句不起作用了。
    这个问题我是不行了,只有高手了。