2015-06-04 60 views
0

我正在使用updatepanel和templatefield,其itemTemplate是一個imagebutton控件。當按下圖像按鈕時,會觸發該按鈕後面的事件,該事件正在修補以填充它不執行的文本域。使用updatepanel和gridview templatefield(ImageButton),發射事件,但在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您需要在RowDataBound事件這樣添加觸發器GridView內。

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"}); 
    } 
} 
相關問題