我想在DetailsView上实现以下功能:
点击编辑按钮后,根据不同的用户进入不同的编辑状态,就是A用户点击编辑后,字段a能进入编辑模式,字段b是readonly状态;而B用户点击编辑后,字段b能进入编辑模式,字段a是readonly状态。请问能实现上述功能吗?我是新手,请各位朋友讲得具体点,就是举个简单例子,麻烦各位了,非常感谢!!!

解决方案 »

  1.   

    可用 javascript 修改 只读状态
      

  2.   

    if (DetailsView1.CurrentMode == DetailsViewMode.Edit)   
      {   
      TextBox t= DetailsView1.FindControl("txt") as TextBox ;   
      //判断
      }   
      

  3.   

    若字段a,字段b分别在第一第二行,在DataBound事件中设置,(分非模板列和模板列)
        protected void DetailsView1_DataBound(object sender, EventArgs e)
        {
            if (DetailsView1.CurrentMode == DetailsViewMode.Edit)
            {
                if (是用户a)
                {
                    //非模板列
                    ((TextBox)DetailsView1.Rows[1].Cells[1].Controls[0]).ReadOnly = false;
                    ((TextBox)DetailsView1.Rows[2].Cells[1].Controls[0]).ReadOnly = true;//或者.Enabled = false也可以;\                //模板列
                    //((TextBox)DetailsView1.Rows[1].Cells[1].FindControl("TextBox1")).ReadOnly = false;
                    //((TextBox)DetailsView1.Rows[2].Cells[1].FindControl("TextBox2")).ReadOnly = true;
                }
                else if (是用户b)
                {
                    //非模板列
                    ((TextBox)DetailsView1.Rows[1].Cells[1].Controls[0]).ReadOnly = true;
                    ((TextBox)DetailsView1.Rows[2].Cells[1].Controls[0]).ReadOnly = false;
                    
                    //模板列
                    //((TextBox)DetailsView1.Rows[1].Cells[1].FindControl("TextBox1")).ReadOnly = true;
                    //((TextBox)DetailsView1.Rows[2].Cells[1].FindControl("TextBox2")).ReadOnly = false;
                }
            }
        }
      

  4.   

    ((TextBox)DetailsView1.Rows[1].Cells[1].Controls[0]).ReadOnly
    这样寻找就好了 第2行 第二列的控件 然后转换成TEXTBOX 在设置对应的属性
      

  5.   

    楼上2位,因为现在不能试,但是我昨天是试过的,就是输入以下代码后
    ((TextBox)DetailsView1.Rows[1].Cells[1].FindControl("TextBox1")).再输入r
    asp.net都会自动弹出对应存在的属性,但我明明记得是找不到ReadOnly的属性的,难道我前面输入错了??真奇怪,我明天试试看!!谢谢2位了