私は削除をサポートするGridViewを持っています。私は 'あなたはこの行を削除してもよろしいですか?'という質問をポップアップウィンドウに追加したいと思います。データビューの行を削除する前に削除を確認する
マイコード:背後
<asp:GridView id="GridAccounts" runat="server" AutoGenerateColumns="False"
ShowFooter="True" DataKeyNames="ID"
DataSourceID="AccountDataSource" onrowcommand="GridAccounts_RowCommand">
<SelectedRowStyle BackColor="Lime" />
<Columns>
<asp:CommandField ButtonType="Image" ShowDeleteButton="True" DeleteImageUrl="~/Pictures/delete.jpg" />
<asp:TemplateField HeaderText="ID" InsertVisible="False" SortExpression="ID">
<EditItemTemplate>
<asp:Label ID="LabelAccountIDUpdate" runat="server" Text='<%# Eval("ID") %>'></asp:Label>
</EditItemTemplate>
<FooterTemplate>
<asp:Button ID="ButtonAccountIDInsert" runat="server" CommandName="Insert" Text="Insert" />
</FooterTemplate>
<ItemTemplate>
<asp:Label ID="LabelAccountID" runat="server" Text='<%# Bind("ID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
コード:
protected void GridPaymentMethod_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
ImageButton deleteButton = (ImageButton)e.Row.Cells[0].Controls[0];
MyMoney.PaymentMethodRow row = (MyMoney.PaymentMethodRow)((System.Data.DataRowView)e.Row.DataItem).Row;
deleteButton.OnClientClick = string.Format("return confirm('Are you sure you want to delete payment method {0}?');", row.Name.Replace("'", @"\'"));
}
}
これは、レンダリングのように:
<input type="image" src="Pictures/delete.jpg" alt="Delete" onclick="return confirm('Are you sure you want to delete payment method Gotovina?');javascript:__doPostBack('ctl00$MainContent$GridPaymentMethod','Delete$0')" style="border-width:0px;" />
私は確認ウィンドウで[OK]をクリックすると、ポストバックが発生しますが、何も起こりません。 RowDataBoundコードをコメントアウトすると、削除よりもOKになります。コードなしの確認ポップアップ:
<input type="image" src="Pictures/delete.jpg" alt="Delete" onclick="javascript:__doPostBack('ctl00$MainContent$GridPaymentMethod','Delete$0')" style="border-width:0px;" />
私は間違っていますか?
CommandFieldについて魔法はありません。起動するアクションにCommandNameを設定した標準のLinkButtonを追加するだけです。あなたはそれをあなた自身のLinkButtonで正しいCommandNameに置き換えることができます(例えば、CommandName = "Delete"は削除イベントを引き起こします)。 –
私はこのチュートリアルを使用しました:http://www.asp.net/Learn/data-access/tutorial-22-cs.aspx – sventevit
aspxのOnClickハンドラのないcommandNameの素晴らしいヒント。 – adrianos