2016-06-09 2 views
0

Я использую Visual Studio 2015 с веб-приложением WebForm. У меня есть ListView и SQLDataSource. SQLDataSource подключен к SQL-серверу.ASP.NET ListView SQLDataSource

Использование операций ListView, таких как Edit, Insert и Delete, работает.

У меня есть текстовое поле, в котором пользователь может ввести имя города и нажать кнопку, которая обновит SQLDataSource SQL-Query С этим я могу искать/фильтровать для City-Names. Это работает.

Но если я нажму кнопку «Изменить» после поиска, результат поиска в Listview удаляется, и отображаются все записи. Так что я не могу использовать «редактировать» после того, как выполнил поиск.

Как выполнить поиск и отредактировать одну из найденных записей в ListView?

enter image description here

.apsx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="frmMain.aspx.cs" Inherits="DB_mit_GridView.frmMain" %> 

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 

     <asp:Label ID="Label1" runat="server" Text="Stadt"></asp:Label> 
     <asp:TextBox ID="txtCity" runat="server"></asp:TextBox> 
     <asp:Button ID="btnSearch" runat="server" OnClick="btnSearch_Click" Text="Suche" /> 

    </div> 
     <asp:GridView ID="GridViewDatenAnzeigen" runat="server" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="CustomerID" DataSourceID="SqlDataSource1" PageSize="5"> 
      <Columns> 
       <asp:CommandField ShowSelectButton="True" /> 
       <asp:BoundField DataField="CustomerID" HeaderText="CustomerID" ReadOnly="True" SortExpression="CustomerID" /> 
       <asp:BoundField DataField="CustomerName" HeaderText="CustomerName" SortExpression="CustomerName" /> 
       <asp:BoundField DataField="City" HeaderText="City" SortExpression="City" /> 
       <asp:BoundField DataField="PostalCode" HeaderText="PostalCode" SortExpression="PostalCode" /> 
       <asp:BoundField DataField="Country" HeaderText="Country" SortExpression="Country" /> 
      </Columns> 
     </asp:GridView> 
     <br /> 
     <asp:ListView ID="ListView1" runat="server" DataKeyNames="CustomerID" DataSourceID="SqlDataSource1" OnSelectedIndexChanged="ListView1_SelectedIndexChanged" InsertItemPosition="LastItem"> 
      <AlternatingItemTemplate> 
       <tr style=""> 
        <td> 
         <asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="Delete" /> 
         <asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="Edit" /> 
        </td> 
        <td> 
         <asp:Label ID="CustomerIDLabel" runat="server" Text='<%# Eval("CustomerID") %>' /> 
        </td> 
        <td> 
         <asp:Label ID="CustomerNameLabel" runat="server" Text='<%# Eval("CustomerName") %>' /> 
        </td> 
        <td> 
         <asp:Label ID="CityLabel" runat="server" Text='<%# Eval("City") %>' /> 
        </td> 
        <td> 
         <asp:Label ID="PostalCodeLabel" runat="server" Text='<%# Eval("PostalCode") %>' /> 
        </td> 
        <td> 
         <asp:Label ID="CountryLabel" runat="server" Text='<%# Eval("Country") %>' /> 
        </td> 
       </tr> 
      </AlternatingItemTemplate> 
      <EditItemTemplate> 
       <tr style=""> 
        <td> 
         <asp:Button ID="UpdateButton" runat="server" CommandName="Update" Text="Update" /> 
         <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="Cancel" /> 
        </td> 
        <td> 
         <asp:Label ID="CustomerIDLabel1" runat="server" Text='<%# Eval("CustomerID") %>' /> 
        </td> 
        <td> 
         <asp:TextBox ID="CustomerNameTextBox" runat="server" Text='<%# Bind("CustomerName") %>' /> 
        </td> 
        <td> 
         <asp:TextBox ID="CityTextBox" runat="server" Text='<%# Bind("City") %>' /> 
        </td> 
        <td> 
         <asp:TextBox ID="PostalCodeTextBox" runat="server" Text='<%# Bind("PostalCode") %>' /> 
        </td> 
        <td> 
         <asp:TextBox ID="CountryTextBox" runat="server" Text='<%# Bind("Country") %>' /> 
        </td> 
       </tr> 
      </EditItemTemplate> 
      <EmptyDataTemplate> 
       <table runat="server" style=""> 
        <tr> 
         <td>No data was returned.</td> 
        </tr> 
       </table> 
      </EmptyDataTemplate> 
      <InsertItemTemplate> 
       <tr style=""> 
        <td> 
         <asp:Button ID="InsertButton" runat="server" CommandName="Insert" Text="Insert" /> 
         <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="Clear" /> 
        </td> 
        <td> 
         <asp:TextBox ID="CustomerIDTextBox" runat="server" Text='<%# Bind("CustomerID") %>' /> 
        </td> 
        <td> 
         <asp:TextBox ID="CustomerNameTextBox" runat="server" Text='<%# Bind("CustomerName") %>' /> 
        </td> 
        <td> 
         <asp:TextBox ID="CityTextBox" runat="server" Text='<%# Bind("City") %>' /> 
        </td> 
        <td> 
         <asp:TextBox ID="PostalCodeTextBox" runat="server" Text='<%# Bind("PostalCode") %>' /> 
        </td> 
        <td> 
         <asp:TextBox ID="CountryTextBox" runat="server" Text='<%# Bind("Country") %>' /> 
        </td> 
       </tr> 
      </InsertItemTemplate> 
      <ItemTemplate> 
       <tr style=""> 
        <td> 
         <asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="Delete" /> 
         <asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="Edit" /> 
        </td> 
        <td> 
         <asp:Label ID="CustomerIDLabel" runat="server" Text='<%# Eval("CustomerID") %>' /> 
        </td> 
        <td> 
         <asp:Label ID="CustomerNameLabel" runat="server" Text='<%# Eval("CustomerName") %>' /> 
        </td> 
        <td> 
         <asp:Label ID="CityLabel" runat="server" Text='<%# Eval("City") %>' /> 
        </td> 
        <td> 
         <asp:Label ID="PostalCodeLabel" runat="server" Text='<%# Eval("PostalCode") %>' /> 
        </td> 

        <td> 
         <asp:Label ID="CountryLabel" runat="server" Text='<%# Eval("Country") %>' /> 
        </td> 

       </tr> 
      </ItemTemplate> 
      <LayoutTemplate> 
       <table runat="server"> 
        <tr runat="server"> 
         <td runat="server"> 
          <table id="itemPlaceholderContainer" runat="server" border="0" style=""> 
           <tr runat="server" style=""> 
            <th runat="server"></th> 
            <th runat="server">CustomerID</th> 
            <th runat="server">CustomerName</th> 
            <th runat="server">City</th> 
            <th runat="server">PostalCode</th> 
            <th runat="server">Country</th> 
           </tr> 
           <tr id="itemPlaceholder" runat="server"> 
           </tr> 
          </table> 
         </td> 
        </tr> 
        <tr runat="server"> 
         <td runat="server" style=""> 
          <asp:DataPager ID="DataPager1" runat="server" > 
           <Fields> 
            <asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="True" ShowNextPageButton="False" ShowPreviousPageButton="False" /> 
            <asp:NumericPagerField /> 
            <asp:NextPreviousPagerField ButtonType="Button" ShowLastPageButton="True" ShowNextPageButton="False" ShowPreviousPageButton="False" /> 
           </Fields> 
          </asp:DataPager> 
         </td> 
        </tr> 
       </table> 
      </LayoutTemplate> 
      <SelectedItemTemplate> 
       <tr style=""> 

        <td> 
         <asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="Delete" /> 
         <asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="Edit" /> 
        </td> 
        <td> 
         <asp:Label ID="CustomerIDLabel" runat="server" Text='<%# Eval("CustomerID") %>' /> 
        </td> 
        <td> 
         <asp:Label ID="CustomerNameLabel" runat="server" Text='<%# Eval("CustomerName") %>' /> 
        </td> 
        <td> 
         <asp:Label ID="CityLabel" runat="server" Text='<%# Eval("City") %>' /> 
        </td> 
        <td> 
         <asp:Label ID="PostalCodeLabel" runat="server" Text='<%# Eval("PostalCode") %>' /> 
        </td> 
        <td> 
         <asp:Label ID="CountryLabel" runat="server" Text='<%# Eval("Country") %>' /> 
        </td> 
       </tr> 
      </SelectedItemTemplate> 
     </asp:ListView> 
     <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:TestDBConnectionString %>" SelectCommand="SELECT * FROM [Customers]" DeleteCommand="DELETE FROM [Customers] WHERE [CustomerID] = @original_CustomerID" InsertCommand="INSERT INTO [Customers] ([CustomerID], [CustomerName], [City], [PostalCode], [Country]) VALUES (@CustomerID, @CustomerName, @City, @PostalCode, @Country)" OldValuesParameterFormatString="original_{0}" UpdateCommand="UPDATE [Customers] SET [CustomerName] = @CustomerName, [City] = @City, [PostalCode] = @PostalCode, [Country] = @Country WHERE [CustomerID] = @original_CustomerID"> 
      <DeleteParameters> 
       <asp:Parameter Name="original_CustomerID" Type="String" /> 
      </DeleteParameters> 
      <InsertParameters> 
       <asp:Parameter Name="CustomerID" Type="String" /> 
       <asp:Parameter Name="CustomerName" Type="String" /> 
       <asp:Parameter Name="City" Type="String" /> 
       <asp:Parameter Name="PostalCode" Type="String" /> 
       <asp:Parameter Name="Country" Type="String" /> 
      </InsertParameters> 
      <UpdateParameters> 
       <asp:Parameter Name="CustomerName" Type="String" /> 
       <asp:Parameter Name="City" Type="String" /> 
       <asp:Parameter Name="PostalCode" Type="String" /> 
       <asp:Parameter Name="Country" Type="String" /> 
       <asp:Parameter Name="original_CustomerID" Type="String" /> 
      </UpdateParameters> 
     </asp:SqlDataSource> 
     <br /> 
    </form> 
</body> 
</html> 

.aspx.cs

public partial class frmMain : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 

     } 

     protected void btnSearch_Click(object sender, EventArgs e) 
     { 

      //Search is done here 

      SqlDataSource1.SelectCommand = "SELECT* FROM[Customers] where City = '" + txtCity.Text +"'"; 


     } 

     protected void ListView1_SelectedIndexChanged(object sender, EventArgs e) 
     { 

     } 
    } 
+0

, где ваш список просмотров заселен в первый раз со всеми данными? пожалуйста, поделитесь кодом события загрузки страницы –

+0

listview автоматически заполняется при запуске приложения. Я не добавляю никакого кода. Событие page_load пусто – Spacewalker

+0

Я не добавляю код, но в SQLDataSource есть SQLQueryProperty: SELECT * FROM [Customers] – Spacewalker

ответ

1

просто Ставить в выберите команду источника данных и добавления выберите параметр

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:TestDBConnectionString %>" SelectCommand="SELECT * FROM [Customers] WHERE City LiKE @City + '%'" DeleteCommand="DELETE FROM [Customers] WHERE [CustomerID] = @original_CustomerID" InsertCommand="INSERT INTO [Customers] ([CustomerID], [CustomerName], [City], [PostalCode], [Country]) VALUES (@CustomerID, @CustomerName, @City, @PostalCode, @Country)" OldValuesParameterFormatString="original_{0}" UpdateCommand="UPDATE [Customers] SET [CustomerName] = @CustomerName, [City] = @City, [PostalCode] = @PostalCode, [Country] = @Country WHERE [CustomerID] = @original_CustomerID"> 
      <DeleteParameters> 
       <asp:Parameter Name="original_CustomerID" Type="String" /> 
      </DeleteParameters> 
    <SelectParameters> 
    <asp:ControlParameter ControlID="txtCity" Name="City" PropertyName="Text" Type="String" DefaultValue="%" /> 
    </SelectParameters> 
      <InsertParameters> 
       <asp:Parameter Name="CustomerID" Type="String" /> 
       <asp:Parameter Name="CustomerName" Type="String" /> 
       <asp:Parameter Name="City" Type="String" /> 
       <asp:Parameter Name="PostalCode" Type="String" /> 
       <asp:Parameter Name="Country" Type="String" /> 
      </InsertParameters> 
      <UpdateParameters> 
       <asp:Parameter Name="CustomerName" Type="String" /> 
       <asp:Parameter Name="City" Type="String" /> 
       <asp:Parameter Name="PostalCode" Type="String" /> 
       <asp:Parameter Name="Country" Type="String" /> 
       <asp:Parameter Name="original_CustomerID" Type="String" /> 
      </UpdateParameters> 
     </asp:SqlDataSource> 

и после того, как т шляпа удалить код позади выбрать запрос

protected void btnSearch_Click(object sender, EventArgs e) 
     { 

      //Search is done here 

     // SqlDataSource1.SelectCommand = "SELECT* FROM[Customers] where City = '" + txtCity.Text +"'"; 


     }