2015-12-30 1 views
1

Я использую GridView вместе с SqlDataSource для выбора, обновление и удаления, и DetailsView для Вставки, проблема, когда я нажимаю одну из этих кнопок, я получаю эту ошибку для Delete порядок (и та же ошибка с Insert и Update ..):Как сгенерировать необходимые операторы SQL для обновления, вставки, удаления данных в GridView?

Удаление не поддерживается источником данных «SqlDataSource1», если не указана DeleteCommand.

Очень утомительно добавлять эти утверждения самостоятельно, и в некоторых случаях мне необходимо определить хранимые процедуры. Я спрашиваю, потому что я читал (но не помню, где, к сожалению) учебник, который Visual Studio генерирует все это автоматически.

исходный код:

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Donor.aspx.cs" Inherits="Donor" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server"> 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> 
    <asp:GridView ID="GridView1" runat="server" 
     AutoGenerateColumns="False" CellPadding="4" 
     DataKeyNames="Id" DataSourceID="SqlDataSource1" 
     EmptyDataText="There are no data records to display." 
     ForeColor="#333333" GridLines="None" AllowSorting="True"> 
     <AlternatingRowStyle BackColor="White" /> 
     <Columns> 
      <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" ItemStyle-Width="120px"/> 
      <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" ItemStyle-Width="150px"/> 
      <asp:BoundField DataField="BloodGroup" HeaderText="BloodGroup" SortExpression="BloodGroup" ItemStyle-Width="120px"/> 
      <asp:BoundField DataField="Disease" HeaderText="Disease" SortExpression="Disease" ItemStyle-Width="120px"/> 
     </Columns> 
     <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" /> 
     <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" /> 
     <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" /> 
     <RowStyle BackColor="#FFFBD6" ForeColor="#333333" /> 
     <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" /> 
     <SortedAscendingCellStyle BackColor="#FDF5AC" /> 
     <SortedAscendingHeaderStyle BackColor="#4D0000" /> 
     <SortedDescendingCellStyle BackColor="#FCF6C0" /> 
     <SortedDescendingHeaderStyle BackColor="#820000" /> 
    </asp:GridView> 
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
     ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
     SelectCommand="SELECT [Name], [BloodGroup], [Disease], [Id] FROM [Patient]"> 
    </asp:SqlDataSource> 
    <asp:DetailsView ID="DetailsView1" runat="server" CellPadding="4" 
     DataSourceID="SqlDataSource2" ForeColor="#333333" 
     GridLines="None" Height="50px" Width="125px" 
     DefaultMode="Insert"> 
     <AlternatingRowStyle BackColor="White" /> 
     <CommandRowStyle BackColor="#FFFFC0" Font-Bold="True" /> 
     <FieldHeaderStyle BackColor="#FFFF99" Font-Bold="True" /> 
     <Fields> 
      <asp:CommandField ShowInsertButton="True" /> 
     </Fields> 
     <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" /> 
     <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" /> 
     <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" /> 
     <RowStyle BackColor="#FFFBD6" ForeColor="#333333" /> 
    </asp:DetailsView> 
    <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="SELECT [Name], [BloodGroup], [Disease] FROM [Patient]" InsertCommand="INSERT INTO [Patient] ([Name],[BloodGroup],[Disease]) VALUES (@Name, @BloodGroup, @Disease)"> 
     <InsertParameters> 
      <asp:Parameter Name="Name" /> 
      <asp:Parameter Name="BloodGroup" /> 
      <asp:Parameter Name="Disease" /> 
     </InsertParameters> 
    </asp:SqlDataSource> 
</asp:Content> 
+0

Можете ли вы показать нам код, что вы сделали? – Sankar

+0

Я добавил его сейчас –

+1

См. В SQLdatasource1 содержит только команду Selectcommand. Вы должны включить все остальные команды (вставить, обновить, удалить) так же, как @ user2946329. – Sankar

ответ

2

Добавьте DeleteCommand к вашему SqlDataSource:

DeleteCommand="Delete from yourTable WHERE (ID = @ID)" 

Как это:

<asp:SqlDataSource runat="server" DeleteCommand="Delete from yourTable WHERE (ID = @ID)"> 
    <DeleteParameters> 
     <asp:Parameter Name="ID"></asp:Parameter> 
    </DeleteParameters> 
</asp:SqlDataSource> 

EDIT: Для того, чтобы ASP.NET генерировать DELETE автоматическая команда союзник для вас без какого-либо кода, выполните следующие действия:

  1. В окне задач вашего SqlDataSource, нажмите Настройка источника данных.
  2. Выберите подключение для данных и свяжитесь с Следующее.
  3. Убедитесь, что Укажите пользовательскую инструкцию SQL или хранимую процедуру и нажмите . Далее.
  4. Выберите DELETE Tab, а затем нажмите на Query Builder, выберите таблицу и затем создать запрос, помогая окно Query Builder. Ваш запрос должен быть выглядеть в конце концов:

    Delete from yourTable WHERE (ID = @ID) 
    
  5. И, наконец, нажмите Следующая И Готово.

+1

Отличный thx для деталей – Drew

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