2013-07-10 3 views
0

Я пытаюсь установить значение для TextLabel при щелчке по сообщению LinkButton. Однако мне не повезло.Как получить доступ к WebControl в DataList

Я попытался использовать DataList.SelectedItem.FindControl("blah"), как показано на рисунке here, но SelectedItem продолжает возвращаться null.

Я также пробовал что-то вроде this stackoverflow question, но это не работает.

<asp:DataList 
    ID="dlMessages" 
    runat="server" 
    DataSourceID="dsMessages"> 
<EditItemStyle Font-Names="Courier New" /> 
<ItemStyle BorderStyle="NotSet" /> 
<ItemTemplate> 
    <div> 
    <table> 
     <tr> 
     <td><asp:LinkButton ID="MessageName" Text="Some stuff" runat="server" /></td> 
     <td>...</td> 
     </tr> 
    </table> 
    <asp:Label ID="TextLabel" runat="server /> 
    </div> 
</ItemTemplate> 

protected void DataList_OnItemCommand(object sender, EventArgs e) 
{ 
    if (dlMessages.SelectedItem == null) 
     return; 
    DagSelect.Text = ((LinkButton) dlMessages.SelectedItem.FindControl("MessageName")).Text; 
    Label l = (Label) dlMessages.SelectedItem.FindControl("TextLabel"); 
    l.Text = DagSelect.Text; 
} 

Кто-нибудь знает, как это сделать? В основном, я хочу, чтобы текст отображался только при выборе элемента. Когда это не так, строка должна оставаться пустой/невидимой.

ответ

1

Добавьте CommandName="Select" в свой LinkButton, а затем измените свое событие на событие SelectedIndexChanged в своем DataList.

<asp:LinkButton CommandName="Select" ID="MessageName" Text="Some stuff" runat="server" /> 
+0

спасибо! Он отлично работает! знак равно –