GridView.DataKeyNames Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает или задает массив, содержащий имена первичных ключевых полей для элементов, отображенных в элементе управления GridView.
public:
virtual property cli::array <System::String ^> ^ DataKeyNames { cli::array <System::String ^> ^ get(); void set(cli::array <System::String ^> ^ value); };
[System.ComponentModel.TypeConverter(typeof(System.Web.UI.WebControls.StringArrayConverter))]
public virtual string[] DataKeyNames { get; set; }
[<System.ComponentModel.TypeConverter(typeof(System.Web.UI.WebControls.StringArrayConverter))>]
member this.DataKeyNames : string[] with get, set
Public Overridable Property DataKeyNames As String()
Значение свойства
Массив, содержащий имена первичных ключевых полей для элементов, отображенных в элементе управления GridView.
- Атрибуты
Примеры
В следующем примере показано, как использовать DataKeyNames свойство для указания ключевого поля источника данных. В этом примере DataKeyNames
атрибут элемента в разметке GridView
задает два ключевых поля с помощью запятой для разделения имен. Чтобы запустить этот пример, создайте веб-сайт со следующими параметрами:
Подключение к образцу базы данных AdventureWorksLT и строка подключения с именем
AdventureWorksLTConnectionString
. Сведения о настройке примера базы данных AdventureWorksLT см. в разделе Практическое руководство. Настройка образца базы данных AdventureWorksLT для разработки ASP.NET.Класс контекста данных LINQ-to-SQL с именем
AdventureWorksLTDataClassesDataContext
. Контекст данных должен иметь класс для таблицы SalesOrderDetails. Сведения о создании классов LINQ to-SQL см. в разделе LINQ to SQL.
<asp:LinqDataSource ID="LinqDataSource1" runat="server"
ContextTypeName="AdventureWorksLTDataClassesDataContext"
EnableDelete="True" EnableInsert="True" EnableUpdate="True"
TableName="SalesOrderDetails">
</asp:LinqDataSource>
<asp:GridView ID="GridView1" runat="server"
AutoGenerateColumns="False"
DataKeyNames="SalesOrderID,SalesOrderDetailID"
DataSourceID="LinqDataSource1">
<Columns>
<asp:CommandField ShowDeleteButton="True"
ShowEditButton="True" />
<asp:BoundField DataField="SalesOrderID"
HeaderText="SalesOrderID" ReadOnly="True"
SortExpression="SalesOrderID" />
<asp:BoundField DataField="SalesOrderDetailID"
HeaderText="SalesOrderDetailID" InsertVisible="False"
ReadOnly="True" SortExpression="SalesOrderDetailID" />
<asp:BoundField DataField="OrderQty"
HeaderText="OrderQty" SortExpression="OrderQty" />
<asp:BoundField DataField="ProductID"
HeaderText="ProductID" SortExpression="ProductID" />
<asp:BoundField DataField="UnitPrice"
HeaderText="UnitPrice" SortExpression="UnitPrice" />
<asp:BoundField DataField="ModifiedDate"
HeaderText="ModifiedDate" SortExpression="ModifiedDate" />
</Columns>
</asp:GridView>
<asp:LinqDataSource ID="LinqDataSource1" runat="server"
ContextTypeName="AdventureWorksLTDataClassesDataContext"
EnableDelete="True" EnableInsert="True" EnableUpdate="True"
TableName="SalesOrderDetails">
</asp:LinqDataSource>
<asp:GridView ID="GridView1" runat="server"
AutoGenerateColumns="False"
DataKeyNames="SalesOrderID,SalesOrderDetailID"
DataSourceID="LinqDataSource1">
<Columns>
<asp:CommandField ShowDeleteButton="True"
ShowEditButton="True" />
<asp:BoundField DataField="SalesOrderID"
HeaderText="SalesOrderID" ReadOnly="True"
SortExpression="SalesOrderID" />
<asp:BoundField DataField="SalesOrderDetailID"
HeaderText="SalesOrderDetailID" InsertVisible="False"
ReadOnly="True" SortExpression="SalesOrderDetailID" />
<asp:BoundField DataField="OrderQty"
HeaderText="OrderQty" SortExpression="OrderQty" />
<asp:BoundField DataField="ProductID"
HeaderText="ProductID" SortExpression="ProductID" />
<asp:BoundField DataField="UnitPrice"
HeaderText="UnitPrice" SortExpression="UnitPrice" />
<asp:BoundField DataField="ModifiedDate"
HeaderText="ModifiedDate" SortExpression="ModifiedDate" />
</Columns>
</asp:GridView>
Комментарии
Используйте свойство , DataKeyNames чтобы указать поле или поля, представляющие первичный ключ источника данных. Для этого свойства следует задать только поле или поля, необходимые для уникальной идентификации каждой строки; Например, столбец идентификатора, если целочисленное значение однозначно идентифицирует каждую строку. Чтобы функции автоматического обновления и удаления элемента управления работали DataKeyNamesGridView , необходимо задать свойство . Значения этих ключевых полей передаются в элемент управления источником данных, чтобы указать строку для обновления или удаления.
Если необходимо получить значение ключа данных при обновлении или удалении Keys
строки, используйте свойство GridViewUpdateEventArgs класса или GridViewDeleteEventArgs . Например, e.Keys[0]
содержит значение первого ключа данных в обработчике RowUpdating событий или RowDeleting .
Если необходимо получить значение ключа данных при выборе SelectedDataKey строки, используйте свойство .
DataKeyNames Если свойство задано, GridView элемент управления автоматически заполняет свою DataKeys коллекцию значениями из указанного поля или полей, что обеспечивает удобный способ доступа к первичным ключам каждой строки.
Примечание
Элемент GridView управления сохраняет эти значения ключевого поля в состоянии элемента управления. Если эти значения содержат конфиденциальную информацию, настоятельно рекомендуется включить шифрование состояния представления, задав ViewStateEncryptionMode для свойства значение ViewStateEncryptionMode.Always
.
При использовании автоматически создаваемых столбцов полей (задав AutoGenerateColumns для свойства значение true
), GridView элемент управления гарантирует, что столбцы, соответствующие полю или полям, указанным в свойстве DataKeyNames , доступны только для чтения.
Если свойству Visible поля столбца присвоено значение false
, столбец не отображается в элементе GridView управления и данные для столбца не переходят к клиенту. Если требуется, чтобы данные для столбца, который не отображается, были доступны клиенту, добавьте имя поля в DataKeyNames свойство .