Удалить строку Datalist с несколькими первичными ключами


4

У меня есть datalist с OnDeleteCommand = "Delete_Command".

Я хочу удалить запись с несколькими первичными ключами, но я не знаю, как получить к ней доступ из события Delete_Command.

Если я использую DataKeyField, я ограничусь только одним ключом. Любые обходные пути для этого?

1

Вы можете получить доступ ко всем клавишам:

gridView.DataKeys[rowNum][dataKeyName] 

где RowNum является e.RowIndex из обработчика события gridView_RowDeleting и dataKeyName это ключ, который вы хотите получить:

<asp:GridView ID="gridView" runat="server" DataKeyNames="userid, id1, id2, id3" OnRowDeleting="gridView_RowDeleting"> 

protected void gridView_RowDeleting(object sender, GridViewDeleteEventArgs e) 
{ 
    gridView.DataKeys[e.RowIndex]["userid"]... 
    gridView.DataKeys[e.RowIndex]["id1"]... 
    gridView.DataKeys[e.RowIndex]["id2"]... 
    gridView.DataKeys[e.RowIndex]["id3"]... 
} 

0

О, извините, я пропустил это.

AFAIK по умолчанию не существует такой возможности. Может быть, вы можете создать составной ключ из ваших первичных ключей, как

Key1UnderscoreKey2UnderscoreKey3

и разделить его в обработчик событий. Так что это многопользовательский обработчик DIY для DataList :-)

Редактировать: символ подчеркивания потерялся во время форматирования, он заменяет курсивом текст. Поэтому вместо слова «подчеркивание» используйте реальные символы подчеркивания