Repeater의 headertemplate에서 mylabel.text를 설정합니다
-
23-08-2019 - |
문제
이 작업을 수행 한 모든 샘플은이 작업을 수행하기 위해 내 페이지의 onload 이외의 기능을 작성하는 것으로 구성되지만 더 간결한 방법이 있는지 궁금합니다. Headertemplate 내부에 레이블이 있으며 레이블의 텍스트를 문자열로 설정하고 싶습니다. 레이블이 리피터 외부에 있으면 다음을 수행 할 수 있습니다.
Month.Text = Enum.GetName(typeof(Month), Convert.ToInt16(MonthList.SelectedValue));
이것을하는 간결한 방법이 있습니까?
해결책
다음을 시도하십시오 내부에 헤더 템플릿 :
<asp:Label ID="Month" runat="server" Text='<%# (Month)Convert.ToInt16(MonthList.SelectedValue) %>' />
다른 팁
Databinding 이벤트를 사용하면 더 나을 것입니다.
ASPX 마크 업 :
<asp:Repeater ID="repTest" runat="server">
<HeaderTemplate>
<asp:Label ID="lblHeader" runat="server" />
</HeaderTemplate>
</asp:Repeater>
뒤에 코드 :
protected void Page_Load(object sender, EventArgs e)
{
repTest.ItemDataBound += new RepeaterItemEventHandler(repTest_ItemDataBound);
int[] testData = { 1, 2, 3, 4, 5, 6, 7, 8 };
repTest.DataSource = testData;
repTest.DataBind();
}
void repTest_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Header)
{
Label lblHeader = e.Item.FindControl("lblHeader") as Label;
if (lblHeader != null)
{
lblHeader.Text = "Something";
}
}
}
당신은 간다 :)
리피터가 데이터에 묶일 때까지 기다릴 필요가 있는지 여부는 100% 확실하지 않지만 이것이 헤더 내에서 컨트롤에 액세스하는 방법입니다.
var myLabel = MyRepeater.Controls[0].Controls[0].FindControl("MyLabel") as Label;
myLabel.Text = "Hello World";
아마도 그것을 여러 줄로 나누고 컨트롤에 객체가 있는지 확인해야합니다 [0].
제휴하지 않습니다 StackOverflow