2016-10-11 2 views
2

У меня есть gridview с привязкой данных: все строки генерируются в зависимости от ItemSource. Я также добавляю колонку в конце, содержащую кнопку. Как связать поле из текущего элемента источника данных в качестве параметра события нажатия кнопки?Как передать параметр через кнопку щелчка

Вот пример кода:

WebForm

<asp:GridView ID="GridView1" runat="server" 
    AutoGenerateColumns="false" 
    ItemType="ServiceMonitoring.MyClass" 
    SelectMethod="GetMyClassItems" 
    CellPadding="4" 
    ShowFooter="true"> 
    <Columns> 
     <asp:BoundField DataField="MyProperty" HeaderText="ID" /> 
     <asp:TemplateField HeaderText="Action"> 
      <ItemTemplate> 
       <asp:Button runat="server" 
        CommandArgument='<%= MyClass.MyProperty %>' 
        CommandName="ThisBtnClick" 
        OnClick="Unnamed_Click" 
        Text="retraiter !" /> 
       <%--<button onclick="UpdateMyClassItems" runat="server" value="VALEUR">retraiter !</button>--%> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

Code-за

public partial class WebForm1: System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) { } 

    public List<MyClass> GetMyClassItems() 
    { 
     var a = new MyClass() { MyProperty = 2 }; 
     return new List<MyClass>() { a }; 
    } 

    protected void Unnamed_Click(object sender, EventArgs e) 
    { 
     var arg = (sender as Button).CommandArgument; 
     string ID = arg.ToString(); 
    } 
} 

public class MyClass 
{ 
    public int MyProperty { get; set; } 
} 

Команда аргумент связывания не работает. Не могли бы вы мне помочь ?

+0

@Aristos У меня есть эта ошибка сейчас: Message d'erreur du compilateur: CS0103: Le nom 'MyClass' n'existe pas dans le contexte actuel (Имя «MyClass» не существует в текущий контекст) Можете ли вы мне помочь? –

+0

ошибка на английском языке пожалуйста – naveen

+0

@naveen Имя «MyClass» не существует в текущем контексте –

ответ

1

Измените CommandArgument следующим образом.

CommandArgument='<%# Eval("MyProperty") %>' 

это сделаю. Вы уже упоминали своих ItemType="ServiceMonitoring.MyClass"

+1

Спасибо, он отлично работает. –

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