2016-10-11 2 views
2

데이터 바인딩이있는 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; } 
} 

명령 인수 바인딩이 작동하지 않습니다

웹 양식 :

여기에 코드 샘플입니다. 도와 줄수있으세요 ?

+0

@Aristos이 오류가 있습니다. 메시지 오류 : CS0103 : Le nom 'MyClass'이 (가) 'MyClass'라는 이름으로 존재하지 않습니다. 현재 상황) 제발 도와 주실 수 있습니까? –

+0

영어로 오류주십시오. – naveen

+0

@naveen 'MyClass'이름이 현재 컨텍스트에 없습니다. –

답변

1

CommandArgument을 이와 같이 변경하십시오.

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

. 이미 언급 한 내용입니다. ItemType="ServiceMonitoring.MyClass"

+1

고맙습니다. 완벽하게 작동합니다. –

관련 문제