получить значение ключа данных и текст метки из Datalist одним нажатием кнопки?

#asp.net #asp.net-4.0 #datalist

#asp.net #asp.net-4.0 #datalist

Вопрос:

как получить значение Datakey и метки, которые присутствуют внутри datalist?

у меня есть кнопка с изображением и кнопка linkbutton, при нажатии на которые я пытаюсь получить, но не могу этого сделать. я не хочу использовать событие Item_Command.

Как сделать?

Спасибо.

Комментарии:

1. В чем проблема при командном событии и почему вы не хотите использовать?

2. Проблем нет, но я пытаюсь пройти через событие imageClick и событие linkClick. Возможно ли это?? если да, то, пожалуйста, направьте меня.

3. Вы можете получить значение ключа данных, но вы не можете получить текст метки, если у вас больше элементов в DataList

4. @Muhammad: То есть вы хотите сказать, что я могу использовать значение ключа данных только при нажатии кнопки linkbutton?? в listview мы можем получить значение из ярлыков внутри listview при нажатии кнопки linkbutton или button.

5. Если вам нужны оба значения, вы можете привязать оба значения к CommandArgument , например CommandArgument=»34,LabelText», а затем разделить это значение. Но я бы рекомендовал вам привязывать значение ключа данных только к аргументу команды. получив значение первичного ключа, вы можете получить подробную информацию о сущности из базы данных.

Ответ №1:

Если вы хотите получить Data Key значение одним нажатием ImageButton/LinkButton , вы можете присвоить значение DataKey CommandArgument свойству вашего элемента управления, а затем в обработчике щелчков вы можете получить значение из CommandArgument свойства.

 <asp:ImageButton ID="ibtn" runat="server" CommandArgument='<%# Eval("DataKeyName")%>'
 ImageUrl="~/Images/edit.png"></asp:ImageButton>
  

Тот же случай и для linkbutton.

Ответ №2:

Внутри события нажатия кнопки вы можете сделать следующее, чтобы получить DataKey и метку (при условии, что они находятся в той же коллекции элементов управления, что и кнопка):

 var button = sender as Button;

if (button == null) return;

var dataListItem = button.NamingContainer as DataListItem;

if (dataListItem == null) return;

var currentKey = DataList1.DataKeys[dataListItem.ItemIndex];

var myLabel = button.Parent.Controls.Cast<Control>().FirstOrDefault(x => x.ID == "testLabel") as Label;

if (myLabel == null) return;

var myLabelText = myLabel.Text;