2013-05-24 2 views
4

asp.net에 검색 페이지가 있으며 사용자가 책을 검색하고 결과가 gridview에 나열됩니다. 각 gridview 결과 열의 오른쪽에 단추를 추가했습니다. 예를 들어, 사용자가 단추를 클릭하면 해당 책을 대출하는 등의 단추에 이벤트를 추가하려고합니다. 여기 asp.net의 GridView 단추에 이벤트를 추가하는 방법

enter image description here

내 코드입니다 : 여기

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="SearchResults.aspx.cs" Inherits="Pages_SearchResults" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div>  
    </div> 
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    DataKeyNames="ISBN" DataSourceID="SqlDataSource1" 
    onselectedindexchanged="GridView1_SelectedIndexChanged"> 
    <Columns> 
     <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" /> 
     <asp:BoundField DataField="ISBN" HeaderText="ISBN" ReadOnly="True" 
      SortExpression="ISBN" /> 
     <asp:BoundField DataField="AuthorName" HeaderText="Author Name" 
      SortExpression="AuthorName" /> 
     <asp:BoundField DataField="AuthorlName" HeaderText="Author Last Name" 
      SortExpression="AuthorlName" /> 
     <asp:BoundField DataField="ItemType" HeaderText="Item Type" 
      SortExpression="ItemType" /> 
     <asp:BoundField DataField="PublishYear" HeaderText="Publish Year" 
      SortExpression="PublishYear" /> 
     <asp:ButtonField ButtonType="Button" CommandName="LoanItem" Text="Loan Item" /> 
    </Columns> 
</asp:GridView> 
<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
    SelectCommand="SELECT * FROM [Items] WHERE ([Title] LIKE '%' + @Title + '%')"> 
    <SelectParameters> 
     <asp:FormParameter FormField="tSearchBox" Name="Title" Type="String" /> 
    </SelectParameters> 
</asp:SqlDataSource> 
</form> 
</body> 
</html> 

그리고이의 SearchResult 페이지의 .cs 파일입니다

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

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

    } 

    protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) 
    { 

    } 
} 

나는 추가는 여기의 스크린 샷입니다 버튼은 다음과 같이 표시됩니다 : 클릭 수 : BUttonField

enter image description here

내 질문은, 어떻게 "Loan Item"버튼에 이벤트를 추가 할 수 있습니까? 나는이 링크 http://msdn.microsoft.com/en-us/library/bb498195.aspx을 읽었지만 실제로 이벤트 처리기가 어떻게 추가되는지는 알려주지 않습니다. 어떤 도움을 주셔서 감사합니다. 고마워

답변

4

뒤에

코드에
 <asp:TemplateField> 
     <ItemTemplate> 
      <asp:Button ID="Buttonid" runat="server" CommandName="LoanItem" Text="Loan Item" OnClick="Button_click_event"></asp:Button>  
     </ItemTemplate> 
</asp:TemplateField> 

에, 나는 당신의 예를 들어 링크, 일을하는 RowCommand 이벤트를 추가 생각 GridView.

단추를 클릭하면 RowCommand 이벤트가 발생하고 CommandName과 CommandArgument (클릭 한 단추와 연결된 행/레코드를 식별하는 ID)가 이벤트에 전달됩니다 매니저.

처리기를 만들려면 아래 내 의견을 참조하거나 수동으로 처리하십시오. 그리드에서 :

OnRowCommand="Grid_RowCommand"

그리고 당신의 코드 숨김에서 :

protected void Grid_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 

} 

협약은 핸들러의 이름이 [컨트롤의 controlid] _ [EventName을] 나의 예에서, ID해야한다고 지시 할 것 내 그리드의 숫자는 간단합니다 Grid

+0

예, 그 일을하려고합니다. 예를 들어 일반 버튼에 이벤트를 추가하려면 예를 들어 두 번 클릭하면 함수가 만들어지고 함수에 코드를 씁니다. 하지만 여기에 gridview 또는 해당 단추를 두 번 클릭하면 GridView1_SelectedIndexChanged 함수가 나를 위해 만들어지고 내부 코드가 작동하지 않습니다. – yrazlik

+0

디자인보기에서 그리드를 선택하고 속성 창을 보면 상단에 약간의 번개 모양이 보일 것입니다 (그리드를 몇 번 선택하거나 선택 해제해야 할 수도 있습니다). 번개를 클릭하면 모든 가능한 이벤트 목록이 표시됩니다. 처리기를 자동으로 만들려면 RowCommand 이벤트 오른쪽의 빈 공간을 두 번 클릭합니다. –

+0

네, 고맙습니다! – yrazlik

3

마법사를 통해 버튼을 추가하면 GridView1_SelectedIndexChanged 버튼을 누를 때마다 발사해야합니다. 따라서 선택한 행을 찾아서 그에 따라 행동하면됩니다. t이 별도로 지정;

GridViewRow row = GridView1.Rows[e.NewSelectedIndex]; 

는 피난처 경우 하나 개 이상의 선택된 행이있을 수 있다고 경고한다.

+0

사실 저는 버튼을 클릭 할 때마다 발사 여부를 확인하고 Response.Redirect ("Default.aspx"); 어떤 일이 일어날 지 알기 위해 내부에 있지만 리디렉션하지 않았습니다 – yrazlik

+0

어떻게 버튼을 추가 했습니까? 그리드 뷰 마법사에서 선택 버튼을 추가하고 필요한 이름으로 이름을 변경하는 것이 더 쉽습니다.당신이 그것을 추가하는 데 도움이 필요하면 알려 주시기 바랍니다 – Ted

+0

고마워, 내가 "열 편집"gridview 속성에서 추가, 거기에 다른 방법으로 그것을 추가 할 수 있습니까? – yrazlik

2

변경

<asp:ButtonField ButtonType="Button" CommandName="LoanItem" Text="Loan Item" /> 

내가 할 것이 무엇

Private void Button_click_event(Object sender,EventArgs e) 
{ 
// Click Event of Button 
} 
+0

고마워, 그 작동하지 않았다, 그것은 구문 오류를 제공 – yrazlik

+0

무엇이 오류입니까? 나에게 제공 할 수 있니? –

+0

아쉽게 단추가 정의되지 않았습니다. – yrazlik

관련 문제