簡體   English   中英

從列表視圖中提取數據

[英]Extracting Data from listview

我有一個listview“ ListView1”,它鏈接到我的客戶mssql數據庫上的客戶表。 現在,我已將OnItemDeleting= "ArchiveBeforeDelete"添加到Listview,因為我希望在從普通數據庫中刪除客戶之前將其存檔(移至我的存檔客戶的數據庫customer表中)。 我已經能夠使用e.ItemIndex檢索selectedindex,但是現在我不知道如何使用索引來提取數據,更具體地說是僅提取CustomerID部分。 我瀏覽了屬性和方法,但找不到有效的方法。

編輯:這是.aspx頁中的列表視圖中的代碼

<asp:ListView ID="ListView1" runat="server" DataKeyNames="CustomerId" 
    DataSourceID="SqlDataSource1" OnItemDeleting= "ArchiveBeforeDelete">
    <AlternatingItemTemplate>
        <tr style="background-color: #FAFAD2;color: #284775;">
            <td>
                <asp:Button ID="ArchiveButton" runat="server" CommandName="Delete"
                    Text="Archive" />
                <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="CustomerStatusLabel" runat="server" 
                    Text='<%# Eval("CustomerStatus") %>' />
            </td>
            <td>
                <asp:Label ID="CustomerFirstNameLabel" runat="server" 
                    Text='<%# Eval("CustomerFirstName") %>' />
            </td>
            <td>
                <asp:Label ID="CustomerLastNameLabel" runat="server" 
                    Text='<%# Eval("CustomerLastName") %>' />
            </td>
            <td>
                <asp:Label ID="CompanyNameLabel" runat="server" 
                    Text='<%# Eval("CompanyName") %>' />
            </td>
            <td>
                <asp:Label ID="CustomerEmailLabel" runat="server" 
                    Text='<%# Eval("CustomerEmail") %>' />
            </td>
            <td>
                <asp:Label ID="CustomerTypeLabel" runat="server" 
                    Text='<%# Eval("CustomerType") %>' />
            </td>
            <td>
                <asp:Label ID="CustomerPhoneNumberLabel" runat="server" 
                    Text='<%# Eval("CustomerPhoneNumber") %>' />
            </td>
            <td>
                <asp:Label ID="CustomerSubscriptionTypeLabel" runat="server" 
                    Text='<%# Eval("CustomerSubscriptionType") %>' />
            </td>
            <td>
                <asp:Label ID="CustomerPaymentMethodLabel" runat="server" 
                    Text='<%# Eval("CustomerPaymentMethod") %>' />
            </td>
            <td>
                <asp:Label ID="CustomerPickUpDayLabel" runat="server" 
                    Text='<%# Eval("CustomerPickUpDay") %>' />
            </td>
            <td>
                <asp:Label ID="CustomerPickUpDay2Label" runat="server" 
                    Text='<%# Eval("CustomerPickUpDay2") %>' />
            </td>
        </tr>
    </AlternatingItemTemplate>
    <EditItemTemplate>
        <tr style="background-color: #FFCC66;color: #000080;">
            <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="CustomerStatusTextBox" runat="server" 
                    Text='<%# Bind("CustomerStatus") %>' />
            </td>
            <td>
                <asp:TextBox ID="CustomerFirstNameTextBox" runat="server" 
                    Text='<%# Bind("CustomerFirstName") %>' />
            </td>
            <td>
                <asp:TextBox ID="CustomerLastNameTextBox" runat="server" 
                    Text='<%# Bind("CustomerLastName") %>' />
            </td>
            <td>
                <asp:TextBox ID="CompanyNameTextBox" runat="server" 
                    Text='<%# Bind("CompanyName") %>' />
            </td>
            <td>
                <asp:TextBox ID="CustomerEmailTextBox" runat="server" 
                    Text='<%# Bind("CustomerEmail") %>' />
            </td>
            <td>
                <asp:TextBox ID="CustomerTypeTextBox" runat="server" 
                    Text='<%# Bind("CustomerType") %>' />
            </td>
            <td>
                <asp:TextBox ID="CustomerPhoneNumberTextBox" runat="server" 
                    Text='<%# Bind("CustomerPhoneNumber") %>' />
            </td>
            <td>
                <asp:TextBox ID="CustomerSubscriptionTypeTextBox" runat="server" 
                    Text='<%# Bind("CustomerSubscriptionType") %>' />
            </td>
            <td>
                <asp:TextBox ID="CustomerPaymentMethodTextBox" runat="server" 
                    Text='<%# Bind("CustomerPaymentMethod") %>' />
            </td>
            <td>
                <asp:TextBox ID="CustomerPickUpDayTextBox" runat="server" 
                    Text='<%# Bind("CustomerPickUpDay") %>' />
            </td>
            <td>
                <asp:TextBox ID="CustomerPickUpDay2TextBox" runat="server" 
                    Text='<%# Bind("CustomerPickUpDay2") %>' />
            </td>
        </tr>
    </EditItemTemplate>
    <EmptyDataTemplate>
        <table runat="server" 
            style="background-color: #FFFFFF;border-collapse: collapse;border-color: #999999;border-style:none;border-width:1px;">
            <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>
                &nbsp;</td>
            <td>
                <asp:TextBox ID="CustomerStatusTextBox" runat="server" 
                    Text='<%# Bind("CustomerStatus") %>' />
            </td>
            <td>
                <asp:TextBox ID="CustomerFirstNameTextBox" runat="server" 
                    Text='<%# Bind("CustomerFirstName") %>' />
            </td>
            <td>
                <asp:TextBox ID="CustomerLastNameTextBox" runat="server" 
                    Text='<%# Bind("CustomerLastName") %>' />
            </td>
            <td>
                <asp:TextBox ID="CompanyNameTextBox" runat="server" 
                    Text='<%# Bind("CompanyName") %>' />
            </td>
            <td>
                <asp:TextBox ID="CustomerEmailTextBox" runat="server" 
                    Text='<%# Bind("CustomerEmail") %>' />
            </td>
            <td>
                <asp:TextBox ID="CustomerTypeTextBox" runat="server" 
                    Text='<%# Bind("CustomerType") %>' />
            </td>
            <td>
                <asp:TextBox ID="CustomerPhoneNumberTextBox" runat="server" 
                    Text='<%# Bind("CustomerPhoneNumber") %>' />
            </td>
            <td>
                <asp:TextBox ID="CustomerSubscriptionTypeTextBox" runat="server" 
                    Text='<%# Bind("CustomerSubscriptionType") %>' />
            </td>
            <td>
                <asp:TextBox ID="CustomerPaymentMethodTextBox" runat="server" 
                    Text='<%# Bind("CustomerPaymentMethod") %>' />
            </td>
            <td>
                <asp:TextBox ID="CustomerPickUpDayTextBox" runat="server" 
                    Text='<%# Bind("CustomerPickUpDay") %>' />
            </td>
            <td>
                <asp:TextBox ID="CustomerPickUpDay2TextBox" runat="server" 
                    Text='<%# Bind("CustomerPickUpDay2") %>' />
            </td>
        </tr>
    </InsertItemTemplate>
    <ItemTemplate>
        <tr style="background-color: #FFFBD6;color: #333333;">
            <td>
                <asp:Button ID="ArchiveButton" runat="server" CommandName="Delete"
                    Text="Archive" />
                <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="CustomerStatusLabel" runat="server" 
                    Text='<%# Eval("CustomerStatus") %>' />
            </td>
            <td>
                <asp:Label ID="CustomerFirstNameLabel" runat="server" 
                    Text='<%# Eval("CustomerFirstName") %>' />
            </td>
            <td>
                <asp:Label ID="CustomerLastNameLabel" runat="server" 
                    Text='<%# Eval("CustomerLastName") %>' />
            </td>
            <td>
                <asp:Label ID="CompanyNameLabel" runat="server" 
                    Text='<%# Eval("CompanyName") %>' />
            </td>
            <td>
                <asp:Label ID="CustomerEmailLabel" runat="server" 
                    Text='<%# Eval("CustomerEmail") %>' />
            </td>
            <td>
                <asp:Label ID="CustomerTypeLabel" runat="server" 
                    Text='<%# Eval("CustomerType") %>' />
            </td>
            <td>
                <asp:Label ID="CustomerPhoneNumberLabel" runat="server" 
                    Text='<%# Eval("CustomerPhoneNumber") %>' />
            </td>
            <td>
                <asp:Label ID="CustomerSubscriptionTypeLabel" runat="server" 
                    Text='<%# Eval("CustomerSubscriptionType") %>' />
            </td>
            <td>
                <asp:Label ID="CustomerPaymentMethodLabel" runat="server" 
                    Text='<%# Eval("CustomerPaymentMethod") %>' />
            </td>
            <td>
                <asp:Label ID="CustomerPickUpDayLabel" runat="server" 
                    Text='<%# Eval("CustomerPickUpDay") %>' />
            </td>
            <td>
                <asp:Label ID="CustomerPickUpDay2Label" runat="server" 
                    Text='<%# Eval("CustomerPickUpDay2") %>' />
            </td>
        </tr>
    </ItemTemplate>
    <LayoutTemplate>
        <table runat="server">
            <tr runat="server">
                <td runat="server">
                    <table ID="itemPlaceholderContainer" runat="server" border="1" 
                        style="background-color: #FFFFFF;border-collapse: collapse;border-color: #999999;border-style:none;border-width:1px;font-family: Verdana, Arial, Helvetica, sans-serif;">
                        <tr runat="server" style="background-color: #FFFBD6;color: #333333;">
                            <th runat="server">
                            </th>
                            <th runat="server">
                                Id</th>
                            <th runat="server">
                                Status</th>
                            <th runat="server">
                                First Name</th>
                            <th runat="server">
                                Last Name</th>
                            <th runat="server">
                                Company Name</th>
                            <th runat="server">
                                E-mail</th>
                            <th runat="server">
                                Type</th>
                            <th runat="server">
                                Phone Number</th>
                            <th runat="server">
                                Subscription Type</th>
                            <th runat="server">
                                Payment Method</th>
                            <th runat="server">
                                Pick-Up Day</th>
                            <th runat="server">
                                Second Pick-Up Day</th>
                        </tr>
                        <tr ID="itemPlaceholder" runat="server">
                        </tr>
                    </table>
                </td>
            </tr>
            <tr runat="server">
                <td runat="server" 
                    style="text-align: center;background-color: #FFCC66;font-family: Verdana, Arial, Helvetica, sans-serif;color: #333333;">
                    <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="background-color: #FFCC66;font-weight: bold;color: #000080;">
            <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="CustomerStatusLabel" runat="server" 
                    Text='<%# Eval("CustomerStatus") %>' />
            </td>
            <td>
                <asp:Label ID="CustomerFirstNameLabel" runat="server" 
                    Text='<%# Eval("CustomerFirstName") %>' />
            </td>
            <td>
                <asp:Label ID="CustomerLastNameLabel" runat="server" 
                    Text='<%# Eval("CustomerLastName") %>' />
            </td>
            <td>
                <asp:Label ID="CompanyNameLabel" runat="server" 
                    Text='<%# Eval("CompanyName") %>' />
            </td>
            <td>
                <asp:Label ID="CustomerEmailLabel" runat="server" 
                    Text='<%# Eval("CustomerEmail") %>' />
            </td>
            <td>
                <asp:Label ID="CustomerTypeLabel" runat="server" 
                    Text='<%# Eval("CustomerType") %>' />
            </td>
            <td>
                <asp:Label ID="CustomerPhoneNumberLabel" runat="server" 
                    Text='<%# Eval("CustomerPhoneNumber") %>' />
            </td>
            <td>
                <asp:Label ID="CustomerSubscriptionTypeLabel" runat="server" 
                    Text='<%# Eval("CustomerSubscriptionType") %>' />
            </td>
            <td>
                <asp:Label ID="CustomerPaymentMethodLabel" runat="server" 
                    Text='<%# Eval("CustomerPaymentMethod") %>' />
            </td>
            <td>
                <asp:Label ID="CustomerPickUpDayLabel" runat="server" 
                    Text='<%# Eval("CustomerPickUpDay") %>' />
            </td>
            <td>
                <asp:Label ID="CustomerPickUpDay2Label" runat="server" 
                    Text='<%# Eval("CustomerPickUpDay2") %>' />
            </td>
        </tr>
    </SelectedItemTemplate>
</asp:ListView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConflictDetection="CompareAllValues" 
    ConnectionString="<%$ ConnectionStrings:tcc_customersConnectionString %>" 
    DeleteCommand="DELETE FROM [Customers] WHERE [CustomerId] = @original_CustomerId AND [CustomerStatus] = @original_CustomerStatus AND [CustomerFirstName] = @original_CustomerFirstName AND [CustomerLastName] = @original_CustomerLastName AND [CompanyName] = @original_CompanyName AND [CustomerEmail] = @original_CustomerEmail AND [CustomerType] = @original_CustomerType AND [CustomerPhoneNumber] = @original_CustomerPhoneNumber AND [CustomerSubscriptionType] = @original_CustomerSubscriptionType AND [CustomerPaymentMethod] = @original_CustomerPaymentMethod AND [CustomerPickUpDay] = @original_CustomerPickUpDay AND [CustomerPickUpDay2] = @original_CustomerPickUpDay2" 
    InsertCommand="INSERT INTO [Customers] ([CustomerStatus], [CustomerFirstName], [CustomerLastName], [CompanyName], [CustomerEmail], [CustomerType], [CustomerPhoneNumber], [CustomerSubscriptionType], [CustomerPaymentMethod], [CustomerPickUpDay], [CustomerPickUpDay2]) VALUES (@CustomerStatus, @CustomerFirstName, @CustomerLastName, @CompanyName, @CustomerEmail, @CustomerType, @CustomerPhoneNumber, @CustomerSubscriptionType, @CustomerPaymentMethod, @CustomerPickUpDay, @CustomerPickUpDay2)" 
    OldValuesParameterFormatString="original_{0}" 
    SelectCommand="SELECT [CustomerId], [CustomerStatus], [CustomerFirstName], [CustomerLastName], [CompanyName], [CustomerEmail], [CustomerType], [CustomerPhoneNumber], [CustomerSubscriptionType], [CustomerPaymentMethod], [CustomerPickUpDay], [CustomerPickUpDay2] FROM [Customers] ORDER BY [CustomerLastName], [CustomerFirstName], [CustomerId]" 
    UpdateCommand="UPDATE [Customers] SET [CustomerStatus] = @CustomerStatus, [CustomerFirstName] = @CustomerFirstName, [CustomerLastName] = @CustomerLastName, [CompanyName] = @CompanyName, [CustomerEmail] = @CustomerEmail, [CustomerType] = @CustomerType, [CustomerPhoneNumber] = @CustomerPhoneNumber, [CustomerSubscriptionType] = @CustomerSubscriptionType, [CustomerPaymentMethod] = @CustomerPaymentMethod, [CustomerPickUpDay] = @CustomerPickUpDay, [CustomerPickUpDay2] = @CustomerPickUpDay2 WHERE [CustomerId] = @original_CustomerId AND [CustomerStatus] = @original_CustomerStatus AND [CustomerFirstName] = @original_CustomerFirstName AND [CustomerLastName] = @original_CustomerLastName AND [CompanyName] = @original_CompanyName AND [CustomerEmail] = @original_CustomerEmail AND [CustomerType] = @original_CustomerType AND [CustomerPhoneNumber] = @original_CustomerPhoneNumber AND [CustomerSubscriptionType] = @original_CustomerSubscriptionType AND [CustomerPaymentMethod] = @original_CustomerPaymentMethod AND [CustomerPickUpDay] = @original_CustomerPickUpDay AND [CustomerPickUpDay2] = @original_CustomerPickUpDay2">
    <DeleteParameters>
        <asp:Parameter Name="original_CustomerId" Type="Int32" />
        <asp:Parameter Name="original_CustomerStatus" Type="String" />
        <asp:Parameter Name="original_CustomerFirstName" Type="String" />
        <asp:Parameter Name="original_CustomerLastName" Type="String" />
        <asp:Parameter Name="original_CompanyName" Type="String" />
        <asp:Parameter Name="original_CustomerEmail" Type="String" />
        <asp:Parameter Name="original_CustomerType" Type="String" />
        <asp:Parameter Name="original_CustomerPhoneNumber" Type="String" />
        <asp:Parameter Name="original_CustomerSubscriptionType" Type="String" />
        <asp:Parameter Name="original_CustomerPaymentMethod" Type="String" />
        <asp:Parameter Name="original_CustomerPickUpDay" Type="String" />
        <asp:Parameter Name="original_CustomerPickUpDay2" Type="String" />
    </DeleteParameters>
    <InsertParameters>
        <asp:Parameter Name="CustomerStatus" Type="String" />
        <asp:Parameter Name="CustomerFirstName" Type="String" />
        <asp:Parameter Name="CustomerLastName" Type="String" />
        <asp:Parameter Name="CompanyName" Type="String" />
        <asp:Parameter Name="CustomerEmail" Type="String" />
        <asp:Parameter Name="CustomerType" Type="String" />
        <asp:Parameter Name="CustomerPhoneNumber" Type="String" />
        <asp:Parameter Name="CustomerSubscriptionType" Type="String" />
        <asp:Parameter Name="CustomerPaymentMethod" Type="String" />
        <asp:Parameter Name="CustomerPickUpDay" Type="String" />
        <asp:Parameter Name="CustomerPickUpDay2" Type="String" />
    </InsertParameters>
    <UpdateParameters>
        <asp:Parameter Name="CustomerStatus" Type="String" />
        <asp:Parameter Name="CustomerFirstName" Type="String" />
        <asp:Parameter Name="CustomerLastName" Type="String" />
        <asp:Parameter Name="CompanyName" Type="String" />
        <asp:Parameter Name="CustomerEmail" Type="String" />
        <asp:Parameter Name="CustomerType" Type="String" />
        <asp:Parameter Name="CustomerPhoneNumber" Type="String" />
        <asp:Parameter Name="CustomerSubscriptionType" Type="String" />
        <asp:Parameter Name="CustomerPaymentMethod" Type="String" />
        <asp:Parameter Name="CustomerPickUpDay" Type="String" />
        <asp:Parameter Name="CustomerPickUpDay2" Type="String" />
        <asp:Parameter Name="original_CustomerId" Type="Int32" />
        <asp:Parameter Name="original_CustomerStatus" Type="String" />
        <asp:Parameter Name="original_CustomerFirstName" Type="String" />
        <asp:Parameter Name="original_CustomerLastName" Type="String" />
        <asp:Parameter Name="original_CompanyName" Type="String" />
        <asp:Parameter Name="original_CustomerEmail" Type="String" />
        <asp:Parameter Name="original_CustomerType" Type="String" />
        <asp:Parameter Name="original_CustomerPhoneNumber" Type="String" />
        <asp:Parameter Name="original_CustomerSubscriptionType" Type="String" />
        <asp:Parameter Name="original_CustomerPaymentMethod" Type="String" />
        <asp:Parameter Name="original_CustomerPickUpDay" Type="String" />
        <asp:Parameter Name="original_CustomerPickUpDay2" Type="String" />
    </UpdateParameters>
</asp:SqlDataSource>

然后在代碼隱藏文件中

 protected void ArchiveBeforeDelete(object sender, ListViewDeleteEventArgs e)
    {
        int listIndex = (int)e.ItemIndex;
    }

我所擁有的就是索引。 然后我嘗試了類似@ itsme86的建議,但無濟於事...我只想要的是CustomerID,這樣我就可以從表中調用該特定ID,然后插入其他已歸檔的客戶中表...

您應該將CustomerId放在“ tr”標記上,以便可以在事件處理程序中將其取回。 見下文...

<asp:ListView ID="ListView1" runat="server" DataKeyNames="CustomerId" 
DataSourceID="SqlDataSource1" OnItemDeleting= "ArchiveBeforeDelete">
<AlternatingItemTemplate>
    <tr id="<%# Eval("CustomerId") %>"
        style="background-color: #FAFAD2;color: #284775;">
        <td>
            <asp:Button ID="ArchiveButton" runat="server" CommandName="Delete"
                Text="Archive" />
            <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="CustomerStatusLabel" runat="server" 
                Text='<%# Eval("CustomerStatus") %>' />
        </td>
etc.

因此,正如我在前面的評論中建議的那樣,可以按如下方式在.aspx頁中編輯DeleteCommand:

INSERT INTO ArchivedCustomers SELECT CustomerStatus, CustomerGroup, CustomerFirstName, CustomerLastName, CompanyName, CustomerAddress, CustomerCity, CustomerState, CustomerZipcode, CustomerEmail, CustomerEmail2, CustomerPhoneNumber, CustomerPhoneNumberExt, CustomerType, CustomerSubscriptionType, CustomerCost, CustomerPaymentMethod, CustomerSignUpDate, CustomerPickUpDay, CustomerPickUpDay2, CustomerNotes FROM Customers WHERE CustomerID = @original_CustomerID; DELETE FROM Customers WHERE CustomerId = @original_CustomerId"

如您所見,首先將其插入ArchivedCustomers表中,然后在完成后將其刪除。 不過要注意一件事,我必須將ConflictDetection屬性從CompareAllValues更改為OverwriteChanges,以停止出現錯誤。 如果有人願意解釋,請這樣做,但是現在我只關心它能起作用! :)非常感謝@ Jake1164,如果您沒有讓我發布該代碼,我認為我不會看到像我一樣快地編輯該命令的功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM