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