Подтверждение удаления клиента - PullRequest
0 голосов
/ 17 января 2012

У меня есть опция «Удалить», отображаемая на моем GridView, который заполняется через источник данных SQL. Я пытаюсь реализовать способ, при котором пользователю будет предложено подтвердить, что он хочет удалить строку информации. Я следую руководству от http://msdn.microsoft.com/en-us/library/ms972940.aspx.

Проблема, с которой я сталкиваюсь в настоящее время, заключается в том, что, когда я добавляю свой ObjectDataSource, я выбираю класс, а когда я выбираю нужный метод, его нет в списке (Рис. 37).

Дополнительная информация - я изначально создал GridView для заполнения через SQLDataSource, теперь я пытаюсь перейти к ObjectDataSource и добавить свой DeleteMethod. Я застрял в этой части, и у меня пока нет всплывающего окна, которое попросит пользователя продолжить. Я буду работать над этим после того, как преодолею нынешний вызов.

Вот мой код aspx:

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContentAdmin" runat="server"> </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="MainContentAdmin" runat="server">
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
        CellPadding="4" DataKeyNames="CourseSection_ID" DataSourceID="SqlDataSource1" 
        ForeColor="#333333" GridLines="None">
        <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
        <Columns>
            <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
            <asp:BoundField DataField="CourseSection_ID" HeaderText="CourseSection_ID" 
                InsertVisible="False" ReadOnly="True" SortExpression="CourseSection_ID" />
            <asp:BoundField DataField="section" HeaderText="section" 
                SortExpression="section" />
        </Columns>
        <EditRowStyle BackColor="#999999" />
        <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
        <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
        <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
        <SortedAscendingCellStyle BackColor="#E9E7E2" />
        <SortedAscendingHeaderStyle BackColor="#506C8C" />
        <SortedDescendingCellStyle BackColor="#FFFDF8" />
        <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
    </asp:GridView>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:MGT598DBConnectionString1 %>" 
        SelectCommand="SELECT * FROM [Course_Section]" 
        DeleteCommand="DELETE FROM [Course_Section] WHERE [CourseSection_ID] = @CourseSection_ID" 
        InsertCommand="INSERT INTO [Course_Section] ([section]) VALUES (@section)" 
        UpdateCommand="UPDATE [Course_Section] SET [section] = @section WHERE [CourseSection_ID] = @CourseSection_ID">
        <DeleteParameters>
            <asp:Parameter Name="CourseSection_ID" Type="Int32" />
        </DeleteParameters>
        <InsertParameters>
            <asp:Parameter Name="section" Type="String" />
        </InsertParameters>
        <UpdateParameters>
            <asp:Parameter Name="section" Type="String" />
            <asp:Parameter Name="CourseSection_ID" Type="Int32" />
        </UpdateParameters>
    </asp:SqlDataSource>
    <asp:ObjectDataSource ID="ObjectDataSource1" runat="server">
    </asp:ObjectDataSource> </asp:Content>

Мой код файла:

namespace MGT598GraduateProject.View
{
    public partial class ViewCourse_Section : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //http://msdn.microsoft.com/en-us/library/ms972940.aspx
        }

        public static void DeleteMethod(int CourseSection_ID)
        {
            // deletes a specified Order Details record 
            // from the Northwind Products table
            string sql = "DELETE FROM [Order Details] WHERE OrderID = " + "@OrderID";

            using (SqlConnection myConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["MGT598DBConnectionString1"].ConnectionString))
            {
                SqlCommand myCommand = new SqlCommand(sql, myConnection);
                myCommand.Parameters.Add(new SqlParameter("@CourseSection_ID", CourseSection_ID));
                myConnection.Open();
                myCommand.ExecuteNonQuery();
                myConnection.Close();
            }
        }
    }
}

1 Ответ

1 голос
/ 17 января 2012

Здесь есть два вопроса.

Во-первых, у вас неверные базовые основы.

Вам не нужен SQLDataSource И ObjectDataSource.

Поскольку вы указали Gridview на SqldataSource (DataSourceID = "SQLDataSource1"), источник данных объекта фактически бесполезен.

Вы можете удалить следующий код из aspx:

 <asp:ObjectDataSource ID="ObjectDataSource1" runat="server">
 <asp:ObjectDataSource> </asp:Content> 

И удалите весь DeleteMethod из кода позади.

Если вы прочитаете учебник, с которым вы связали нас, вы увидите, что это два отдельных раздела, и их не нужно делать вместе.

Во-вторых, пользователь должен «подтвердить» удаление.

Для этого измените ваш блок, чтобы он соответствовал следующему:

<Columns>
<asp:TemplateField>
    <ItemTemplate>
         <asp:LinkButton ID="LinkButton1" Runat="server" 
         OnClientClick="return confirm('Are you sure you want to delete this record?');"
         CommandName="Delete">Delete Item
         </asp:LinkButton>
    </ItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowEditButton="True" />
<asp:BoundField DataField="CourseSection_ID"
    HeaderText="CourseSection_ID"
    InsertVisible="False" 
    ReadOnly="True" 
    SortExpression="CourseSection_ID" />
<asp:BoundField DataField="section" 
    HeaderText="section"
    SortExpression="section" />
</Columns>
...