在UpdatePanel中使用GridView

vml*_*l19 8 c# asp.net updatepanel asp.net-ajax

我里面有一个Updatepanel和Gridview.

<asp:UpdatePanel ID="uplPanel" UpdateMode="Conditional" runat="server" OnLoad="uplPanel_Load">
<ContentTemplate>
 <asp:GridView ID="gvPrList" runat="server" AutoGenerateColumns="false" AllowPaging="false"
       AllowSorting="false" CssClass="list-table" HeaderStyle-CssClass="header">
       <Columns>
     <ItemTemplate>
               <asp:Button ID="btnEdit" runat="server" Text="Edit" CssClass="button save" OnCommand="onPrItemCmd"
                   CommandName="editRow" CommandArgument='<%#Bind("ID") %>' Style="width: 80px" />
               <asp:Button ID="btnDelete" runat="server" Text="Delete" CssClass="button save" OnCommand="onPrItemCmd"
                   CommandName="deleteRow" CommandArgument='<%#Bind("ID") %>' Style="width: 80px" />
           </ItemTemplate>
       </asp:TemplateField>
   </Columns>
Run Code Online (Sandbox Code Playgroud)

当我点击Griview内部的按钮时,它不会触发事件.任何的想法?

Nav*_*utt 5

您需要添加OnCommandGridView事件,然后在该事件内处理,如下所示:

OnRowCommand="gvPrList_OnRowCommand" 
Run Code Online (Sandbox Code Playgroud)

或者为单个按钮添加单击事件,然后在代码隐藏文件中处理:

<asp:Button ID="btnEdit" runat="server" OnClick="btnEdit_Click" Text="Edit" CssClass="button save"
                   OnCommand="onPrItemCmd" CommandName="editRow" CommandArgument='<%#Bind("ID") %>' Style="width: 80px" />
Run Code Online (Sandbox Code Playgroud)


vml*_*l19 2

我做了以下工作并且有效

我用 html 按钮替换 asp 按钮并调用 javascript 方法来触发 Update Panal Load 事件。

<input id="btnDelete1" type="button" onclick="javascript:DeletePrItem('<%# Eval("ID") %>');" value="Delete" class="button save" style="width: 80px" />
Run Code Online (Sandbox Code Playgroud)

我的JS:

    function DeletePrItem(_Id) {
        __doPostBack('<%= uplPanel.ClientID %>', _Id);
    }
Run Code Online (Sandbox Code Playgroud)

我的代码背后:

    protected void uplPanel_Load(object sender, EventArgs e)
    {
        var arg = Request.Params.Get("__EVENTARGUMENT");

        if (arg != null)
        {
            if (arg != "")
            {
                string recordId = arg.ToString();
                //Do deletetion and rebind data grid

    }
     }
}
Run Code Online (Sandbox Code Playgroud)