3

今日、グリッド ビューから ID に基づいてレコードを削除していたときに問題が発生し、これに OnRowCommand イベントを使用しました。ここに私のグリッドビューコードがあります:

<asp:GridView ID="gridShow" runat="server" AutoGenerateColumns="False" PageSize="5"
            AllowPaging="true" ShowHeader="false" OnRowCommand="s_index" OnRowDeleting="gridShow_RowDeleting">
            <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:TextBox ID="txtID" runat="server" Text='<%#Eval("ID") %>'></asp:TextBox>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField ItemStyle-Width="15%">
                    <ItemTemplate>
                        <asp:TextBox ID="txtDescription" runat="server" Text='<%#Eval("RollNumber") %>'></asp:TextBox>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:TextBox ID="txtFname" runat="server" Text='<%#Eval("FirstName") %>'></asp:TextBox>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField ItemStyle-Width="15%">
                    <ItemTemplate>
                        <asp:TextBox ID="txtLname" runat="server" Text='<%#Eval("LastName") %>'></asp:TextBox>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField ItemStyle-Width="15%">
                    <ItemTemplate>

                        <asp:TextBox ID="txtEmail" runat="server" Text='<%#Eval("Email") %>'></asp:TextBox>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField ItemStyle-Width="15%">
                    <ItemTemplate>
                        <asp:Label ID="lblStatus" runat="server"></asp:Label>
                        <asp:HiddenField ID="hdnStatus" runat="server" Value='<%#Eval("UserName") %>' />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:LinkButton ID="lb" runat="server" Text="Delete" CommandName="delete" CommandArgument='<%#Eval("ID") %>'></asp:LinkButton>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>

これが私のC#コードです:

 protected void s_index(object sender, GridViewCommandEventArgs e)
 {
     if (e.CommandName == "delete")
     {
         oSRegisterBLL.BLLdelete(Convert.ToInt32(e.CommandArgument));
         gview();
      }
  }
  protected void gridShow_RowDeleting(object sender, GridViewDeleteEventArgs e)
  {
  }

グリッド ビューに OnRowDeleting イベントを追加し、背後のページにそのイベントの定義を追加することで、このタスクを正常に実行しましたが、これを初めて削除したときに、「ASP.datashow_aspx」に「gridShow_RowDeleting」の定義が含まれていないことがわかりました。 'ASP.datashow_aspx' 型の最初の引数を受け入れる拡張メソッド 'gridShow_RowDeleting' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?)"

onrowcommand イベントを使用してグリッドビューに OnRowDeleting イベントを追加する理由と混乱していますか? なぜ私は混乱しているのですか?なぜ私はこのイベントで何の作業もしていないのに、なぜこのイベントを使用するのですか? onrowcommand イベントのみで作業する方法はありますか? または、グリッドビューからレコードを削除するには、onrowdeleting イベントを追加することが不可欠ですか? 私はこれのために私の心をクリアしたいですか?

4

1 に答える 1

4

の aspx マークアップは、GridViewここでイベント ハンドラーを宣言しています。

OnRowDeleting="gridShow_RowDeleting"

そのため、coedebehind から削除しようとすると、その例外が発生します。そのため、イベント ハンドラーを削除するだけで、コード ビハインドから削除できます。

編集

削除ボタンがある場合、または通常のボタンGridViewCommandName削除されている場合 (ここではそうです)、自動的に を起動しようとしOnRowDeletingます。

そのため、使用しない場合でもイベント ハンドラーを追加するか、名前を変更する必要CommandNameあり"DeleteUser"ます。RowDeleting

于 2013-04-19T13:27:04.517 に答える