2011-07-08 6 views
0

私はDatalistコントロールとFormViewコントロールを持つaspxページを1つ持っています。 Datalistはすべてのレコードを表示し、FormViewは非表示になります。 FormViewはレコードの詳細を表示し、Datalistコントロールは表示されません。私がデータリストのレコードをクリックすると、Formviewに行き、選択したレコードを編集します。子LinkBut​​tonコントロールをクリックしたときに、複数のレコードを持つDatalistコントロールの子ラベルコントロール値にアクセスできますか?

レコードIDをクリックイベントに渡して、データベース内のレコードを選択し、詳細をFormviewに表示するにはどうすればよいですか?

同じクライアントIDを持つ複数のコントロールがあり、クライアントIDを一意にするために、ランタイムによって末尾に番号が追加されます。ここで

は、私は背後にあるコードからアクセスしたいコントロールである:ここでは

<asp:Label ID="lHideAndSeek" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "IdString") %>' CssClass="hideAndSeek"> 

は、私は会社の詳細を選択するために使用する制御である。ここでは

<asp:LinkButton ID="btnSelectCompany" runat="server" CausesValidation="false" 
        onclick="btnSelectCompany_Click"><%# DataBinder.Eval(Container.DataItem, "Name") %></asp:LinkButton> 

は私がしたい場所の背後にあるコードでありますリンクボタンがクリックされたときにラベルコントロールにアクセスし、4をハードコーディングする代わりにSelectCompany()に渡します。

protected void btnSelectCompany_Click(object sender, EventArgs e) 
{ 
    DataList1.Visible = false; 

    FormView1.ChangeMode(FormViewMode.ReadOnly); 

    using (jpEntities myEntities = new jpEntities()) 
    { 
     FormView1.DataSource = myEntities.SelectCompany(4); 
     FormView1.DataBind(); 
    } 

    FormView1.Visible = true; 
} 

ありがとうございました!

答えて

0

Text属性で行ったように、LinkBut​​tonにCommandArgument属性を追加してデータをバインドすることができます。次に、コードビハインドからその値を抽出することができます。

このようなものです。

<asp:LinkButton ID="btnSelectCompany" runat="server" 
      CausesValidation="false" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "Id") %>' OnClick="btnSelectCompany_Click"><%# DataBinder.Eval(Container.DataItem, "Name") %></asp:LinkButton> 

LinkButton linkButton = sender as LinkButton; 
int id = int.Parse(linkButton.CommandArgument); 
+0

ありがとうございました。以前はeパラメータでコマンド引数を試していました。 – tss

+0

それはうまくいきませんでした。 ^^ –

関連する問題