我有我的gridviews项目模板标签
<asp:TemplateField HeaderText="TotalTime" SortExpression="TotalTime">
<ItemTemplate>
<asp:TextBox ID="TotalTime" readonly="true" runat="server" ></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
在我的按钮点击事件中,我试图将文本框只读属性设置为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告诉我如何获得值
就您的代码而言,当您使其成为Readonly false
并在Foreach
循环中读取值时,它将只读取Textbox
的一个值,然后在Foreach
循环中,您有另一个Foreach
循环,它找到Textbox
并生成Readonly true
,因此取出ForEach
循环并更改您的代码,如
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 from Here to*/
Rest = objAttendance.InsertUpdateAttendenceDetailNew(objAttnd);
}
/*===>here*/
foreach (GridViewRow Gr in GridView1.Rows)
{
TextBox txt = (TextBox)(Gr.FindControl("TotalTime"));
txt.ReadOnly = true;
}
if (Rest == -1)
{
lblError.Text = "<div class='ErrorMsg'> Attendance details already added for Selected date !!</div>";
}
}
尝试从代码后面添加只读属性,如下所示:
TotalTime.Attributes.Add("readonly", "readonly");
在读取代码后面的值之前,无需将readonly设置为false。