Как передать параметр через нажатие кнопки

#c# #asp.net #gridview

#c# #asp.net #просмотр сетки

Вопрос:

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

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

ВЕБ-ФОРМА

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

Код за

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

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

Комментарии:

1. @Aristos Сейчас у меня такая ошибка: Сообщение о компиляторе: CS0103: имя ‘MyClass’ не существует в реальном контексте (имя ‘MyClass’ не существует в текущем контексте) Не могли бы вы мне помочь, пожалуйста?

2. ошибка на английском, пожалуйста

3. @naveen Имя ‘MyClass’ не существует в текущем контексте

Ответ №1:

Измените CommandArgument вот так.

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

этого будет достаточно. Вы уже упоминаете свой ItemType="ServiceMonitoring.MyClass"