当readonly为true时,无法获取gridview文本框值

时间:2014-10-13 10:09:27

标签: c# asp.net aspxgridview

我有我的gridviews itemtemplate标签

 <asp:TemplateField HeaderText="TotalTime" SortExpression="TotalTime">
       <ItemTemplate>
           <asp:TextBox ID="TotalTime" readonly="true" runat="server" ></asp:TextBox>                                            
        </ItemTemplate>
  </asp:TemplateField>

在我的按钮点击事件上我试图将文本框readonly属性设置为false并获取值,但它对TotalTime文本框不起作用

    protected void BtnSaveAttendence_Click(object sender, EventArgs e)
    {
        foreach (GridViewRow Gr in GridView1.Rows)
        {
         TextBox txt = (TextBox)(Gr.FindControl("TotalTime"));
         txt.ReadOnly = false;
        }
        int Rest = new int();
        object[] objAttnd = new object[8];
        foreach (GridViewRow GR in GridView1.Rows)
        {
            objAttnd[0] = 0;
            objAttnd[1] = ((Label)GR.FindControl("LblEMPNAME")).Text;
            objAttnd[2] = UserInfo.Company.CompanyID;
            objAttnd[3] = Common.Convert_MM_DD_YYYY(txtDate1.Text);
            objAttnd[4] =((TextBox)GR.FindControl("InTime")).Text;
            objAttnd[5] =((TextBox)GR.FindControl("OutTime")).Text;
            objAttnd[6] = ((TextBox)GR.FindControl("TotalTime")).Text;                
            objAttnd[7] = Convert.ToDecimal(((Label)GR.FindControl("LblEmpCode")).Text);
            foreach (GridViewRow Gr in GridView1.Rows)
            {
                TextBox txt = (TextBox)(Gr.FindControl("TotalTime"));
                txt.ReadOnly = true;
            }

         Rest = objAttendance.InsertUpdateAttendenceDetailNew(objAttnd);
        }
        if (Rest == -1)
        {
            lblError.Text = "<div class='ErrorMsg'> Attendance details already added for Selected date !!</div>";
        }
    }

Plz告诉我如何获得价值

2 个答案:

答案 0 :(得分:0)

就您的代码而言,它只会读取Textbox的一个值({1}}并在Readonly false循环中读取Foreach内的值循环本身你有另一个Foreach循环找到Foreach并生成Textbox所以取出Readonly true循环并改变你的代码,如,

ForEach

答案 1 :(得分:0)

尝试从后面的代码中添加readonly属性,如下所示:

TotalTime.Attributes.Add("readonly", "readonly");

在读取后面代码中的值之前,不需要将readonly设置为false。