0

私はasp.netでgridviewとUpdatePanelを使用しています。

<asp:UpdatePanel ID="upSubject" runat="server">
<ContentTemplate>
<div class="c_box" style="height: auto; text-align: center; margin-top: 10px; width:565px; padding-right:140px;">
<asp:GridView ID="gvSubject" runat="server" AutoGenerateColumns="False" 
    SkinID="gvSubject" ShowHeader="true" ShowHeaderWhenEmpty="true" 
    onrowcommand="gvSubject_RowCommand">
<Columns>
<asp:BoundField DataField="lblCounter" HeaderText="Number" ReadOnly="True" HeaderStyle-Font-Bold="false" ItemStyle-Width="60px"></asp:BoundField>
<asp:BoundField DataField="lblSubject" HeaderText="Tiltle" ReadOnly="True" HeaderStyle-Font-Bold="false" ItemStyle-Width="300px" ItemStyle-HorizontalAlign="Right"></asp:BoundField>
<asp:TemplateField HeaderText="Delete" ItemStyle-HorizontalAlign="Center" HeaderStyle-Font-Bold="false" ItemStyle-Width="60px">
<ItemTemplate>
<asp:ImageButton ID="dltSubject" runat="server" CommandName="remove" CommandArgument="lblCounter" ValidationGroup="Subject" OnClientClick="return confirm('Delete?')" ImageUrl="~/Style/Pic/pic_delete_small.png" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<HeaderStyle BackColor="#000000" />
<EmptyDataRowStyle BackColor="#00ff00" />
<EmptyDataTemplate>
Not item...
</EmptyDataTemplate>
</asp:GridView>
</div>
</ContentTemplate>
<Triggers>
<asp:asyncpostbacktrigger controlid="gvSubject" eventname="RowCommand" /> 
</Triggers>
</asp:UpdatePanel>

また

<asp:asyncpostbacktrigger controlid="dltSubject" eventname="Click" /> 

.

protected void gvSubject_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "remove")
        {
            DataTable _dt = (DataTable)Session["Subject"];
            _dt.Rows[int.Parse(e.CommandArgument.ToString())].Delete();

            gvSubject.DataSource = _dt;
            gvSubject.DataBind();

            Session["Subject"] = _dt;
        }
    }

しかし、UpdatePanel は動作しません。UpdatePanel の作業ボタン gridview について教えてください。

グリッドビューと UpdatePanel で ImageButton を動作させたい。

4

1 に答える 1

0

RowCommandにトリガーを使用する必要はありません。このボタンクリック以外に使用したくない場合は、rowcommandも削除してください。

OnCommand=dtlSubject_Clickを指定してください

ここでは、レコードを削除するために必要な一意のIDであると考えて、コマンド引数として「番号」を使用しました。

commandargumentで削除する一意の列を指定する必要があります。

       <asp:ImageButton ID="dltSubject" runat="server"                                                                  
CommandArgument='<%#DataBinder.Eval(Container.DataItem, "Number")%>'
           ValidationGroup="Subject" OnCommand="dtlSubject_Click"
         OnClientClick="return confirm('Delete?')" ImageUrl="~/Style/Pic/pic_delete_small.png" />

そしてサーバー側で次のコードを書き留めます:

 protected void dtlSubject_Click(object sender, CommandEventArgs e)
{
              string uniqueid= e.CommandArgument.ToString();

            //call your procedure here to delete your item.
}
于 2013-02-05T17:23:25.433 に答える