2015-09-16 5 views
1

У меня есть этот кодИмя_команды не виден в исходном коде

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <ContentTemplate> 
     <asp:DataList ID="DataList1" runat="server" OnItemCommand="DataList1_ItemCommand"> 
      <ItemTemplate> 
       <asp:LinkButton ID="LinkButton1" runat="server" CommandName="Command1"> 
        <img src="../images/image1.png" alt="" /> 
       </asp:LinkButton>           
      </ItemTemplate> 
     </asp:DataList> 
    </ContentTemplate> 
</asp:UpdatePanel> 

и этот код

protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e) 
{ 
    if (e.CommandName == "Command1") 
    {  
     // Never drops here 
    }   
} 

Мероприятие срабатывает.
Но когда я отлаживаю, CommandName LinkButton1 не отображается в исходном коде.
Итак, оператор if не работает.

Любые идеи?

Edit:

я понял, что у меня есть другая ошибка мою страницу, которая принадлежит этой ситуации.
Затем я использовал GridView вместо DataList и использовал событие RowCommand GridView и исправил это.

ответ

1

Причина в том, что вы пытаетесь получить CommandName от DataList, а не LinkButton. Ваш код будет работать, если вы сделали следующее:

protected void btnSample_Click(object sender, EventArgs e) 
{ 
    // Instantiate: 
    var command = ((LinkButton)sender).CommandName; 

    // Do additional logic. 
} 

Я считаю, что вы намерены на самом деле что-то сделать на мероприятии Click. Если это не ваше дело, вам нужно будет FindControl на мероприятии в вашем DataList, а затем введите LinkButton, чтобы получить CommandName. Надеюсь, это указывает на правильное направление.

Я бы сделал образец в пределах DataList, но без точной реализации и дополнительной информации я бы не смог. Он был бы аналогичен приведенному выше, просто выделив Control в текущем элементе управления.

+0

Aw Я получил его, мне нужен элемент управления, вы правы. –

Смежные вопросы