私は、データベースから来るデータによってリピーターバインドを持っています。今すぐ行のクリックで詳細な情報の別のリピーターをバインドしたい。 もう1つはネストされていません。 OK例を挙げて説明しますが、私はクラスのリピーターを持っています。このリピーターはschool.Now内のすべてのクラスに関するバインディング情報を持っています。特定のクラスの詳細情報を得るために別のRepeaterがあります。クラスのリストで特定のクラスをクリックすると、詳細情報が表示されます。クラスid。別のリピータの行をクリックしてリピータをバインドする方法はありますか?
1
A
答えて
1
Ok ..あなたがクリックした行の特定のIDを知っています。クリックイベントでIDを取得し、ストアドプロシージャに渡すか、これまでにリピータにバインドしています。
<asp:Repeater ID="repGrd" runat="server">
<ItemTemplate>
<asp:LinkButton ID="lnkbtn" Runat="server" RowID='<%#DataBinder.Eval(Container.DataItem,"ID")%>' OnCommand="clickbutton">Click Here</asp:LinkButton>
</ItemTemplate>
</asp:Repeater>
と後ろのコードはこのように書きます。..
#region On click of row binding repeater
public void clickbutton(Object sender,CommandEventArgs e)
{
try
{
//Getting the ID of clicked row
string RowIDval=((LinkButton)sender).Attributes["RowID"].ToString().Trim();
// Write your code here to bind the repeater as you got the ID
}
catch(Exception ex)
{
}
}
#endregion
これを試してみてください。
0
私は、これはあなたが探しているものだと思う:
クラスに関する拡張情報を表示するユーザーコントロールを。クラスエンティティのコレクションにバインドするリピーターを持つWebフォーム。リピーターのItemTemplateは、一般クラス情報のヘッダーと、Visibility
をfalseに設定して作成したUserControlのインスタンスで構成されています。ユーザーが詳細を見たいかどうかによって、このUCをオン/オフにします。
一部コード:
エンティティ
public class Class
{
public int Id { get; set; }
public string Name { get; set; }
}
public class ClassDetails : Class
{
public int NumberOfWeeks
{
get
{
return this.Id;
}
}
}
ClassDetails
ユーザーコントロール
(ASPX)
<hr />
Class Details:<br />
Number of Weeks: <asp:Label ID="lblNumWeeks" runat="server" />
<hr />
(コードBEH IND)
public void Populate(ClassDetails classDetails)
{
this.lblNumWeeks.Text = classDetails.NumberOfWeeks.ToString();
}
Webフォーム
(ASPX)
<%@ Register Src="~/ClassDetailsUC.ascx" TagPrefix="SO" TagName="ClassDetailsUC" %>
<asp:Repeater ID="rptClassList" runat="server">
<HeaderTemplate>
<table>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<asp:Label ID="lblClassName" runat="server" />
<asp:Button ID="btnShow" runat="server" />
<asp:Panel ID="pnlDetails" Visible="false" runat="server">
<br />
<SO:ClassDetailsUC ID="ucClassDetails" runat="server" />
</asp:Panel>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
(ファイル.csファイル)
/// <summary>
/// Page-level collection of Class instances
/// </summary>
List<ClassDetails> classes;
/// <summary>
/// The current class id we are displaying extended information for
/// </summary>
private int? ActiveId
{
get
{
if (this.ViewState["ClassIdDetails"] == null)
{
return null;
}
else
{
return (int?)this.ViewState["ClassIdDetails"];
}
}
set
{
this.ViewState["ClassIdDetails"] = value;
}
}
protected override void OnInit(EventArgs e)
{
this.rptClassList.ItemDataBound += new RepeaterItemEventHandler(rptClassList_ItemDataBound);
this.rptClassList.ItemCommand += new RepeaterCommandEventHandler(rptClassList_ItemCommand);
base.OnInit(e);
}
void rptClassList_ItemCommand(object source, RepeaterCommandEventArgs e)
{
//for now we know this is the only button on the repeater. so no need to check CommandType
//set new ActiveId
this.ActiveId = Convert.ToInt32(e.CommandArgument);
//re-bind repeater to refresh data
this.BindData();
}
/// <summary>
/// For each Class entity bound, we display some basic info.
/// <para>We also check to see if the current Class is the ActiveId. If it is, turn on the detail panel and populate the ClassDetailsUC</para>
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void rptClassList_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Class classItem = (Class)e.Item.DataItem;
((Label)e.Item.FindControl("lblClassName")).Text = classItem.Name;
((Button)e.Item.FindControl("btnShow")).CommandArgument = classItem.Id.ToString();
if (this.ActiveId.HasValue && this.ActiveId == classItem.Id)
{
//we want to display details for this class
((Panel)e.Item.FindControl("pnlDetails")).Visible = true;
//get ClassDetails instance
ClassDetails details = this.RetrieveDetails(classItem.Id);
//populate uc
((ClassDetailsUC)e.Item.FindControl("ucClassDetails")).Populate(details);
}
}
}
protected void Page_Load(object sender, EventArgs e)
{
//quick data retrieval process :)
classes = new List<ClassDetails> {
new ClassDetails() { Id = 1, Name = "Class 1" },
new ClassDetails() { Id = 2, Name = "Class 2" },
new ClassDetails() { Id = 3, Name = "Class 3" }
};
if (!this.IsPostBack)
{
//only bind on initial load
this.BindData();
}
}
private void BindData()
{
this.rptClassList.DataSource = this.classes;
this.rptClassList.DataBind();
}
/// <summary>
/// Quick function to simulate retrieving a single ClassDetails instance
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
private ClassDetails RetrieveDetails(int id)
{
return this.classes.Where(c => c.Id == id).Single();
}
関連する問題
- 1. リピータ内でgridviewをバインドする方法はありますか?
- 2. リピータ内部のグリッドにDDLをバインドする方法はありますか?
- 3. ジェネリックリストをリピータにバインドする -
- 4. データセットをリピータにバインドする
- 5. リピータの行をクリックすると、クエリ文字列に2つの値を渡す方法はありますか?
- 6. TreelistExからSitecoreのリピータに画像をバインドする方法
- 7. 同じリピータのItemTemplateの[次へ]/[前へ]ボタンを使用してリピータを再バインド
- 8. リピータのXamarinリピータ
- 9. 別のリピータの中のリピータ内のテキストボックスを見つける
- 10. リピータのASP VB.NETリピータ?
- 11. リピータ - ボタンをフィールドにバインドする
- 12. リピータのASP.NETクリック可能部
- 13. リピータのスライドショーで現在の画像アイテムを選択してクリックする方法
- 14. リピータの行の値を変更しますか?私のリピータ内の値に変更しようとして
- 15. リピータをAJAXレスポンスにバインドする最も良い方法は何ですか?
- 16. リンクボタンをクリックすると、親リピータ内の値を取得する方法は?
- 17. リピータのng-clickボタンを見つけてクリックするには
- 18. リピータのDefaultButtonには、テキストボックスとボタンがありますか?
- 19. リピータの構造体のリストへのバインド
- 20. リピータで選択された行を理解する方法は?
- 21. ネストされたリピータは、親リピータに一致するデータを表示します
- 22. マークアップでリピータにデータをバインドする方法とプログラムでバインドする方法の違い
- 23. condititionに基づいてリピータ内のコントロール作成を停止する方法はありますか?
- 24. 既存のロケータを使用してリピータ内の要素をクリック
- 25. rssフィードをリピータにバインドしようとする問題
- 26. リピータからパラメータを渡す
- 27. EF多対多を使用したコードの最初の開発では、データをリピータにバインドする方法はありますか?
- 28. asp.netリピータの最後の反復処理を別の方法で処理する
- 29. リピータ内のLinkButtonのAsyncPostBackTriggerを行う方法
- 30. リピータはItemコマンド
あなたがLinkButtonコントロールのCommandArgument属性を使用している場合、それは次のようになりますIDの取得が容易 –