2011-02-22 13 views
1

私はDefault.aspxのページを持っており、そこにはグリッドをバインドしています。グリッドにはDetailsという名前のボタンがあります。ページ間にIDを渡す

また、Details.aspxにはGridViewがあります。 Default.aspxにあるボタンをクリックすると、Details.aspxページが表示され、空白になります。

特定の行の詳細ボタンをクリックすると、クリックされたボタンの詳細が表示されます。私はIDをDetails.aspxに渡す方法を理解していません。

誰でも私にこの案内をお願いできますか?

Details.aspx

<asp:GridView ID="DetailsGridView" runat="server" BackColor="White" AutoGenerateColumns="false" 
      BorderColor="#DEDFDE" BorderStyle="None" BorderWidth="1px" CellPadding="4" DataKeyNames="ID" 
      ForeColor="Black" GridLines="Vertical"> 
      <FooterStyle BackColor="#CCCC99" /> 
     <PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" /> 
     <SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" /> 
     <HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" /> 
     <AlternatingRowStyle BackColor="White" /> 
     </asp:GridView> 

のDefault.aspx:

  <Columns> 
       <asp:BoundField HeaderText="First Name" DataField="FirstName" /> 
       <asp:BoundField HeaderText="Last Name" DataField = "LastName" /> 
       <asp:BoundField HeaderText="HomePhoneNumber" DataField="HomePhoneNumber" /> 
       <asp:TemplateField HeaderText="ViewDetails"> 
       <ItemTemplate> 
       <asp:Button ID="Deatils" runat="server" Text="Details" /> 
       </ItemTemplate>  

       </asp:TemplateField> 

       <asp:TemplateField HeaderText="Actions"> 
       <ItemTemplate> 
       <asp:Button ID="Modify" runat="server" Text="Modify" /> 
       <asp:Button ID="Delete" runat="server" Text="Delete" /> 

       </ItemTemplate> 
       </asp:TemplateField>     
      </Columns> 


      <FooterStyle BackColor="#CCCC99" /> 
      <PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" /> 
      <SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" /> 
      <HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" /> 
      <AlternatingRowStyle BackColor="White" /> 
     </asp:GridView> 
    </div> 

はJavaScript

<script type="text/javascript"> 
function viewProfile(index) 
{ 
     var GridID = document.getElementById("PersonGridView"); 
     var row=GridID.rows[parseInt(index)+1]; 
     window.open('Details.aspx?coaid'+row); 
} 
</script> 
背後にはDefault.aspxのは

コード:あなたがしたい場合は、以下の

public protected sub Button_Click(EventArgs e) 
{ 

if (grid.SelectedItem != null) 
{ 

var selectedRow = grid.SelectedItem ; 

// do what ever you want to Selected Row that may be binding it to another Form etc. 
} 

がOnSelectedEventために同じことを行うのですかボタン

をクリックし、グリッド上で

protected void PersonGridView_RowDataBound(object sender, GridViewRowEventArgs e) 
     { 
      if (e.Row.RowType == DataControlRowType.DataRow) 
      { 
       var DataKeys = PersonGridView.DataKeys[e.Row.RowIndex]; 
       DataKeys.Value.ToString(); 
       var ID = DataKeys["ID"].ToString(); 
       Button btnDetails = (Button)e.Row.FindControl("Deatils"); 
       Button btnModify = (Button)e.Row.FindControl("Modify"); 
       Button btnDelete = (Button)e.Row.FindControl("Delete"); 
       btnModify.CommandName = "Modify"; 
       btnDelete.CommandName = "Delete"; 
       btnDetails.CommandName = "Deatils"; 
       btnDelete.CommandArgument = btnModify.CommandArgument = btnDetails.CommandArgument = string.Format("{0}", ID); 
       btnDetails.Attributes["onclick"] = string.Format("viewProfile({0}); return false;", e.Row.RowIndex); 
      } 
     } 
+0

フォームリクエストまたはクエリ文字列として渡すことができます – kobe

+0

@gov、私は実際にどこを渡すべきかわかりません。少し詳しく教えてくれますか? –

答えて

2

EDIT:私はHyperLinkを使用しないように、代わりのQueryStringにID値を渡し、あなたのDetails.aspxのページに移動することができLinkButtonを構築します私の例を変更した:

Default.aspxを:

<asp:TemplateField> 
    <ItemTemplate> 
     <asp:LinkButton CommandName="Details" CommandArgument='<%# Eval("ID") %>' Text="Details" runat="server" /> 
    </ItemTemplate> 
</asp:TemplateField> 

Default.aspx.cs:

protected void PersonGridView_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    if (e.CommandName == "Details") 
    { 
     Server.Transfer("Details.aspx?ID=" + e.CommandArgument.ToString()); 
    } 
} 
+0

ボタンがあればどうしますか? :/ –

+0

GridViewとLinkBut​​tonのセクションを使用するように私の例を変更しました。実際のボタンについては、JavaScriptと隠しフィールドを使用する必要があると思います。 – CAbbott

+0

@CAbbott、@Abid Ali - LinkBut​​tonとButtonはどちらもCommandNameとCommandArgumentパラメータを持っています。このコードは互換性があります。 –

0

代わりにそうする。

public protected sub OnSelectedEvent_Click(EventArgs e) 
{ 

if (grid.SelectedItem != null) 
{ 

var selectedRow = grid.SelectedItem ; 

// do what ever you want to Selected Row that may be binding it to another Form etc. 
} 
+0

grid:/:sのイベントに表示されるOnSelectedEventはありません –

+0

@CAbbottあなたのコードは役に立ちました..ありがとうございます。しかし、hrefを実行すると、FirstNameが消えて、Details hrefが表示されます。もう一つの問題は私のグリッドにIDカラムを表示していないことです。 –

関連する問題