2014-11-17 2 views
0
<% 
     foreach (training t in traininglist) 
     { 
    %>       
    <tr> 
     <td><%=t.TrainingId%></td> 
     <td><%=t.TrainingName%></td> 
     <td> 
     <asp:LinkButton runat="server" ID="EditBtn" 
     Text="Edit" OnCommand="editbtn_OnCommand" 
     CommandArgument='<%# t.TrainingId %>' CommandName="edit" /> 
     </td> 

    </tr> 
<% } %> 

где обучения является классом и traininglist является List<training>, определенным в Page_Load() функции в коде.ASP.NET LinkButton не получить динамическое значение для значения CommandArgument

Я пытаюсь вызвать

public void editbtn_OnCommand(object sender, CommandEventArgs e) 
{ 
    String myeid = e.CommandArgument.ToString(); 
    .... 
} 

Здесь myeid не получает значение, но всегда показывает <%# t.TrainingId %>

я уже перепробовал все другие варианты, как <%: t.TrainingId %> or <%=t.TrainingId %>

+1

Вы могли бы изменить атрибут в серверном коде вместо этого? – Tim

+1

Почему бы не использовать 'повторитель'? –

ответ

0

Выход Tag "<%= %>" скорее всего, похож на использование Response.Write в вашем коде. поэтому эти теги используются для отображения значения для объекта ответа.

Вот почему, согласно моему пониманию, вы не можете использовать эти теги для установки свойства controlargance элементов управления, если вы не используете DataBinding. Если вы используете DataBinding, то эти теги "<%= %>" используются для установки свойства элементов управления.

Поскольку вы здесь перебираете каждый элемент в списке на таблице html, мое предложение заключается в использовании GridView или Repeater, а затем Bind через объект List. если вы используете этот способ, вы также можете избавиться от нежелательных проблем с форматированием таблиц html.

См http://msdn.microsoft.com/en-us/library/6dwsdcf5(VS.71).aspx

Если вы хотите использовать репитер, то вы можете использовать эти специфические тег, и это должно быть ваш код (не фактический код, просто попробовать один)

<asp:Repeater id="myRepeater" runat="server" > 
    <ItemTemplate> 
    <div> 
     <asp:LinkButton runat="server" id="EditBtn" CommandName="edit" 
     CommandArgument="<%#Container.DataItem.TrainingId %>" Text="Edit" 
     OnCommand="editbtn_OnCommand" />  
    </div> 
    </ItemTemplate> 
</asp:Repeater>