2015-06-04 2 views
0

Я использую updatepanel с шаблоном, чей элемент ItemTemplate является элементом управления изображением. Когда нажимается кнопка с изображением, запускается событие за кнопкой, которая позволяет набирать текстовые поля, которые она не делает.Использование updatepanel с gridview templatefield (ImageButton), событие Firing, но без изменений в forntend

код .aspx:

          <asp:TemplateField ShowHeader="False"> 
               <ItemTemplate> 
                <asp:UpdatePanel ID="UpdatePanel4" runat="server"> 
                 <Triggers> 
                  <asp:AsyncPostBackTrigger ControlID="_btnUserEdit" EventName="Click" /> 
                 </Triggers> 
                 <ContentTemplate> 
                  <asp:ImageButton ID="_btnUserEdit" runat="server" ImageUrl="~/images/edit.png" CommandName="" Height="30px" Width="30px" OnClick="_btnUserEdit_Click" CausesValidation="false" /> 
                 </ContentTemplate> 
                </asp:UpdatePanel>              
               </ItemTemplate> 
               <ItemStyle Width="35px" /> 
              </asp:TemplateField> 

C# код:

protected void _btnUserEdit_Click(object sender, EventArgs e) 
    { 
     using (EstablishmentDataContext db = new EstablishmentDataContext()) 
     { 
      ImageButton btn = (ImageButton)sender; 

      GridViewRow row = (GridViewRow)btn.NamingContainer; 

      id = Convert.ToInt32(row.Cells[0].Text); 

      var Edit = (from a in db.Users where a.UserID == Convert.ToInt32(row.Cells[0].Text) select a).FirstOrDefault(); 

      _txtName.Text = Edit.Name; 
      _Email.Text = Edit.UserEmail; 
      _Password.Text = _txtConfPassword.Text = Edit.strPassword; 
     } 
    } 

ответ

0

Для использования AsyncPostBackTrigger внутри GridView вам нужно добавить триггер в RowDataBound события, как это.

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if(e.Row.RowType == DataControlRowType.DataRow) 
    { 
     var editButton = e.Row.FindControl("_btnUserEdit") as ImageButton; 
     UpdatePanel1.Triggers.Add(new AsyncPostBackTrigger{ 
      ControlID=editButton.UniqueID, 
      EventName="click"}); 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^