2014-03-31 65 views
1

我添加了一個模板字段並將其設爲按鈕單擊事件。然後我試圖將該值發送到事件方法,並希望通過該值進行一些操作。我寫了下面的代碼。它沒有編譯錯誤,但當我點擊Present瀏覽器顯示以下消息:GridView Value Pass

無效的回發或回調參數。事件驗證在配置中啓用,或在頁面中啓用<%@ Page EnableEventValidation =「true」%>。爲了安全起見,此功能驗證回發或回調事件的參數來自最初呈現它們的服務器控件。如果數據有效且預期,請使用ClientScriptManager.RegisterForEventValidation方法爲註冊回發或回調數據進行驗證。

代碼:

<div> 
       <asp:Panel ID="PanelAllEmployee" runat="server" Height="400px"> 
        <asp:GridView ID="GridViewAllEmployee" runat="server" AutoGenerateColumns="False" style="position:absolute;left:219px; top:202px;" > 
         <Columns> 
          <asp:BoundField DataField="Id" HeaderText="Id" /> 
          <asp:BoundField DataField="Name" HeaderText="Name" /> 
          <asp:BoundField DataField="Department" HeaderText="Department" /> 
          <asp:BoundField DataField="EmailID" HeaderText="Email ID" /> 
          <asp:BoundField DataField="Position" HeaderText="Position" /> 
          <asp:TemplateField HeaderText="Present"> 
           <ItemTemplate> 
            <asp:Button ID="Button1" runat="server" CommandArgument='<%#Eval("Id") %>' OnClick="Button1_Click" Text="Present" /> 
           </ItemTemplate> 
          </asp:TemplateField> 
         </Columns> 
        </asp:GridView> 

        <asp:Label ID="Label1" runat="server" Text="Label"> </asp:Label> 

       </asp:Panel> 
       </div> 

事件方法:

protected void Button1_Click(object sender, EventArgs e) 
    { 
     LinkButton lnk = (LinkButton)sender; 
     string id = lnk.CommandArgument.ToString(); 
     Label1.Text = id; 
    } 

請善待幫助我。我是初學者。詳細的答案非常感謝。謝謝你的時間。

回答

1

設置

EnableEventValidation="false"在頁面指令代碼隱藏

爲前:

<%@ Page Language="C#" EnableEventValidation="false" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %> 

編輯:的.aspx:

<asp:Button ID="Button1" runat="server" 
OnClick = "Button1_Click" CommandArgument='<%#Eval("Id") %>' Text="Present" /> 

CS代碼:

protected void Button1_Click(object sender, EventArgs e) 
    { 
     Button btn = (Button)sender; 

     string id = btn.CommandArgument.ToString(); 


    } 

使用ButtonField字段OnRowCommand事件

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns = "false" 

    OnRowCommand = "OnRowCommand"> 

<Columns> 

    <asp:ButtonField CommandName = "ButtonField" DataTextField = "CustomerID" 

     ButtonType = "Button"/> 

</Columns> 

</asp:GridView> 

代碼背後:

protected void OnRowCommand(object sender, GridViewCommandEventArgs e) 

{ 

    int index = Convert.ToInt32(e.CommandArgument); 

    GridViewRow gvRow = GridView1.Rows[index]; 

} 
+0

這樣做錯誤後示出了指示'的LinkBut​​ton LNK =(LinkBut​​ton的)發送者;'錯誤消息:* *無法將類型爲'System.Web.UI.WebControls.Button'的對象轉換爲'System.Web.UI.WebControls.LinkBut​​ton'。** – Leon

+0

'LinkBut​​ton lnk =(LinkBut​​ton)sender';這是你做錯了沒有什麼像在你的.aspx代碼中的LinkBut​​ton –

+0

對不起。我沒有'LinkBut​​ton'。你能告訴我那麼我怎麼能在'Button1_Click'事件中得到這個'CommandArgument ='<%#Eval(「Id」)%>''命令的值。再次抱歉。感謝您的回覆。 @Ganesh_Devlekar – Leon