共用方式為


ListViewUpdateEventArgs.Keys 屬性

定義

取得一個欄位名稱/值對的字典,代表要更新項目的鍵值。

public:
 property System::Collections::Specialized::IOrderedDictionary ^ Keys { System::Collections::Specialized::IOrderedDictionary ^ get(); };
public System.Collections.Specialized.IOrderedDictionary Keys { get; }
member this.Keys : System.Collections.Specialized.IOrderedDictionary
Public ReadOnly Property Keys As IOrderedDictionary

屬性值

欄位名稱/值對代表要更新項目的鍵值。

範例

以下範例說明如何利用該 Keys 屬性存取被更新記錄的鍵欄位值。

這很重要

此範例中有一個文字框可接受使用者輸入,這可能構成安全威脅。 預設情況下,ASP.NET 網頁會驗證使用者輸入中不包含腳本或 HTML 元素。 欲了解更多資訊,請參閱 腳本漏洞概述

<%@ Page language="C#" %>
    
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
<script runat="server">
    
  void Page_Load()
  {
    Message.Text = String.Empty;
  }
    
  //<Snippet2>
  void UnitMeasureListView_ItemUpdating(Object sender, ListViewUpdateEventArgs e)
  {
    // Use the Keys property to retrieve the key field value
    String keyValue = e.Keys[0].ToString().Trim();

    // Cancel the update operation if the user attempts to 
    // edit a protected record. In this example, unit measure
    // codes with 3 letters are protected.
    if (keyValue.Length == 3)
    {
      Message.Text = "You cannot update this record. " +
        " Unit Measure Code " + keyValue + " is protected.";
        e.Cancel = true;
    }    
  }
  //</Snippet2>
  
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head id="Head1" runat="server">
    <title>ListViewUpdateEventArgs Keys Example</title>
  </head>
  <body>
    <form id="form1" runat="server">
        
      <h3>ListViewUpdateEventArgs Keys Example</h3>
            
      <asp:Label ID="Message"
        ForeColor="Red"          
        runat="server"/>
      <br/>

      <asp:ListView ID="UnitMeasureListView" 
        DataSourceID="UnitMeasureDataSource" 
        DataKeyNames="UnitMeasureCode"
        OnItemUpdating="UnitMeasureListView_ItemUpdating"  
        runat="server">
        <LayoutTemplate>
          <table width="400px" border="1" id="tblUnit">
            <tr runat="server">
              <th runat="server">&nbsp;</th>
              <th runat="server">Unit Measure Code</th>
              <th runat="server">Name</th>
            </tr>
            <tr id="itemPlaceholder" runat="server"></tr>
          </table>
        </LayoutTemplate>
        <ItemTemplate>
          <tr runat="server">
            <td>
              <asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="Edit" />
            </td>
            <td>
              <asp:Label ID="CodeLabel" runat="server" Text='<%#Eval("UnitMeasureCode") %>' />
            </td>
            <td>
              <asp:Label ID="FirstNameLabel" runat="server" Text='<%#Eval("Name") %>' />
            </td>
          </tr>
        </ItemTemplate>
        <AlternatingItemTemplate>
          <tr style="background-color:#B0C4DE" runat="server">
            <td>
              <asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="Edit" />
            </td>
            <td>
              <asp:Label ID="CodeLabel" runat="server" Text='<%#Eval("UnitMeasureCode") %>' />
            </td>
            <td>
              <asp:Label ID="FirstNameLabel" runat="server" Text='<%#Eval("Name") %>' />
            </td>
          </tr>
        </AlternatingItemTemplate>
        <EditItemTemplate>
          <tr style="background-color:#4682B4">
            <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="CodeLabel" runat="server" Text='<%#Eval("UnitMeasureCode") %>' />
            </td>
            <td>
              <asp:TextBox ID="NameTextBox" runat="server" Text='<%#Bind("Name") %>' MaxLength="50" /><br />
            </td>
          </tr>
        </EditItemTemplate>
      </asp:ListView>

      <!-- This example uses Microsoft SQL Server and connects      -->
      <!-- to the AdventureWorks sample database. Use an ASP.NET    -->
      <!-- expression to retrieve the connection string value       -->
      <!-- from the Web.config file.                                -->
      <asp:SqlDataSource ID="UnitMeasureDataSource" runat="server" 
        ConnectionString="<%$ ConnectionStrings:AdventureWorks_DataConnectionString %>"
        SelectCommand="SELECT [UnitMeasureCode], [Name] FROM Production.UnitMeasure"
        UpdateCommand="UPDATE Production.UnitMeasure
                       SET [Name] = @Name
                       WHERE [UnitMeasureCode] = @UnitMeasureCode">
      </asp:SqlDataSource>
      
    </form>
  </body>
</html>
<%@ Page language="VB" %>
    
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
<script runat="server">
   
  Sub Page_Load() 
      Message.Text = String.Empty
  End Sub 'Page_Load

  Sub UnitMeasureListView_ItemUpdating(ByVal sender As Object, ByVal e As ListViewUpdateEventArgs)
    ' Use the Keys property to retrieve the key field value
    Dim keyValue As String = e.Keys(0).ToString().Trim()
    
    ' Cancel the update operation if the user attempts to 
    ' edit a protected record. In this example, unit measure
    ' codes with 3 letters are protected.
    If keyValue.Length = 3 Then
      Message.Text = "You cannot update this record. " & _
        " Unit Measure Code " & keyValue & " is protected."
      e.Cancel = True
    End If

  End Sub 'UnitMeasureListView_ItemUpdating

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head id="Head1" runat="server">
    <title>ListViewUpdateEventArgs Keys Example</title>
  </head>
  <body>
    <form id="form1" runat="server">
        
      <h3>ListViewUpdateEventArgs Keys Example</h3>
            
      <asp:Label ID="Message"
        ForeColor="Red"          
        runat="server"/>
      <br/>

      <asp:ListView ID="UnitMeasureListView" 
        DataSourceID="UnitMeasureDataSource" 
        DataKeyNames="UnitMeasureCode"
        OnItemUpdating="UnitMeasureListView_ItemUpdating"  
        runat="server">
        <LayoutTemplate>
          <table width="400px" border="1" id="tblUnit">
            <tr runat="server">
              <th runat="server">&nbsp;</th>
              <th runat="server">Unit Measure Code</th>
              <th runat="server">Name</th>
            </tr>
            <tr id="itemPlaceholder" runat="server"></tr>
          </table>
        </LayoutTemplate>
        <ItemTemplate>
          <tr runat="server">
            <td>
              <asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="Edit" />
            </td>
            <td>
              <asp:Label ID="CodeLabel" runat="server" Text='<%#Eval("UnitMeasureCode") %>' />
            </td>
            <td>
              <asp:Label ID="FirstNameLabel" runat="server" Text='<%#Eval("Name") %>' />
            </td>
          </tr>
        </ItemTemplate>
        <AlternatingItemTemplate>
          <tr style="background-color:#B0C4DE" runat="server">
            <td>
              <asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="Edit" />
            </td>
            <td>
              <asp:Label ID="CodeLabel" runat="server" Text='<%#Eval("UnitMeasureCode") %>' />
            </td>
            <td>
              <asp:Label ID="FirstNameLabel" runat="server" Text='<%#Eval("Name") %>' />
            </td>
          </tr>
        </AlternatingItemTemplate>
        <EditItemTemplate>
          <tr style="background-color:#4682B4">
            <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="CodeLabel" runat="server" Text='<%#Eval("UnitMeasureCode") %>' />
            </td>
            <td>
              <asp:TextBox ID="NameTextBox" runat="server" Text='<%#Bind("Name") %>' MaxLength="50" /><br />
            </td>
          </tr>
        </EditItemTemplate>
      </asp:ListView>

      <!-- This example uses Microsoft SQL Server and connects      -->
      <!-- to the AdventureWorks sample database. Use an ASP.NET    -->
      <!-- expression to retrieve the connection string value       -->
      <!-- from the Web.config file.                                -->
      <asp:SqlDataSource ID="UnitMeasureDataSource" runat="server" 
        ConnectionString="<%$ ConnectionStrings:AdventureWorks_DataConnectionString %>"
        SelectCommand="SELECT [UnitMeasureCode], [Name] FROM Production.UnitMeasure"
        UpdateCommand="UPDATE Production.UnitMeasure
                       SET [Name] = @Name
                       WHERE [UnitMeasureCode] = @UnitMeasureCode">
      </asp:SqlDataSource>
      
    </form>
  </body>
</html>

備註

DataKeyNames 控制項的屬性 ListView 被設定時,使用 Keys 該屬性(字典)來存取要更新項目中主鍵的值。

備註

要存取非鍵欄位的值,請使用 NewValues or OldValues 屬性。 屬性 NewValues 包含更新後的值, OldValues 屬性則包含原始值。

Keys字典會自動填入屬性中DataKeyNames指定的欄位名稱/值對。 若多個欄位組成主鍵,則每個鍵欄位會新增 Keys 一個獨立條目。

要確定鍵欄位的名稱,請使用DictionaryEntry.Key字典中包含Keys的物件的屬性DictionaryEntry。 要確定鍵欄位的值,請使用屬性 DictionaryEntry.Value

適用於

另請參閱