2012-01-17 2 views
0

У меня есть опция «Удалить», отображаемая в моем 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

Есть две проблемы.

Во-первых, у вас есть несколько фундаментальных оснований неправильно.

Вам не нужен SQLDataSource и объект ObjectDataSource.

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

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

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

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

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

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

Чтобы сделать это, измените ваш блок, чтобы соответствовать следующим образом:

<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> 
+0

Спасибо за вашу помощь! Я также извиняюсь за беспорядок в коде. Я перешел из sqldatasouce в objectdatasource. –

Смежные вопросы