2014-10-13 1 views
0

у меня есть мои GridViews ItemTemplate тегсмог GridView значение текстового поля, когда только чтение верно

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

на моей кнопки мыши событие я пытаюсь сделать текстовое поле только для чтения свойство ложным и получить значение, но оно не работа для 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 скажите мне, как получить значение

+0

Почему вы не используете событие RowCreated для доступа к этому текстовому полю для включения/выключения. –

+0

@NiranjanKala: я хочу получить значение текстового поля в этом событии click! – jibran

+0

Зачем использовать событие click? Событие RowCommand предоставляет информацию, относящуюся к строке в gridview, в которой была нажата кнопка. http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowcommand(v=vs.110).aspx –

ответ

0

насколько Ваш код будет читать только одно значение Textbox, как вы что делает его Readonly false и читать значение в цикле Foreach то внутри самого этого у Вас есть еще один Foreach цикла, который находит Textbox и делает Readonly trueForeach петли так считать, что 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>"; 
    } 
} 
+0

Я пробовал это, его не работает – jibran

+0

да, что внутри петли будет снаружи – jibran

0

Попробуй добавить только для чтения атрибутов из кода позади, как показано ниже:

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

И нет необходимости устанавливать только для чтения, чтобы ложно, прежде чем читать его значение в коде позади.