#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;