Asp.Net在中继器的特定行中设置控件?
中继器代码:Asp.Net在中继器的特定行中设置控件?,asp.net,repeater,findcontrol,Asp.net,Repeater,Findcontrol,中继器代码: <asp:Repeater ID="Repeater_sorular" runat="server" OnItemCommand="Repeater_sorular_ItemCommand" OnItemDataBound="Repeater_sorular_ItemBound"> <HeaderTemplate> </HeaderTemplate> <ItemTemplate
<asp:Repeater ID="Repeater_sorular" runat="server" OnItemCommand="Repeater_sorular_ItemCommand"
OnItemDataBound="Repeater_sorular_ItemBound">
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
<table>
<tr>
<td>
<rad:RadChart ID="RadChart1" runat="server" DefaultType="Pie" Width="700" >
<PlotArea Appearance-FillStyle-FillType="Gradient" Appearance-FillStyle-MainColor="#D90420"
Appearance-FillStyle-SecondColor="#FFAD4A" Appearance-Border-Visible="false">
<EmptySeriesMessage>
<TextBlock Text="Seçilen anket henüz oylanmamıştır.">
<Appearance TextProperties-Font="Tahoma, 10pt, style=Bold">
</Appearance>
</TextBlock>
</EmptySeriesMessage>
</PlotArea>
<ChartTitle>
<TextBlock Appearance-TextProperties-Font="Tahoma">
</TextBlock>
</ChartTitle>
<Appearance ImageQuality="HighQuality" Border-Color="#DFDDDD" TextQuality="ClearTypeGridFit">
</Appearance>
<Series>
<rad:ChartSeries Type="Pie" Appearance-TextAppearance-TextProperties-Color="#FFFFFF"
Appearance-TextAppearance-TextProperties-Font="Tahoma">
</rad:ChartSeries>
</Series>
<Legend Visible="True">
<TextBlock Visible="True">
</TextBlock>
</Legend>
</rad:RadChart>
</td>
<td>
<div style="font-weight: bolder; padding: 5px;">
<%#(((RepeaterItem)Container).ItemIndex+1).ToString() %>.
<%#Eval("Subject")%>
</div>
<asp:BulletedList ID="BulletedList_secenekler" runat="server" DataSource='<%#Eval("Secenekler")%>'
DataTextField="OptionName" DataValueField="OptionId" CssClass="sira_numarali">
</asp:BulletedList>
</td>
</tr>
</table>
</ItemTemplate>
<FooterTemplate>
</FooterTemplate>
</asp:Repeater>
当我写这段代码时,所有的图表都显示了最后的对象值。我想用不同的数据设置每个图表
我怎样才能做到这一点
谢谢。您可以使用
ItemIndex
属性
<asp:Repeater runat="server" ID="myRepeater" OnItemDataBound="myRepeater_ItemDataBound">
<ItemTemplate>
<asp:Label Text='<%# Eval("Id") %>' runat="server" ID="myRepeaterLabel" />
</ItemTemplate>
</asp:Repeater>
输出:
已编辑
我不确定这是否有帮助,但您应该像这样绑定中继器:
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
this.BindRepeater();
}
}
private void BindRepeater()
{
var r = Builder<Product>.CreateListOfSize(20).Build();
this.myRepeater.DataSource = r;
this.myRepeater.DataBind();
}
受保护的无效页面加载(对象发送方,事件参数e)
{
如果(!this.IsPostBack)
{
这个.BindRepeater();
}
}
专用void BindRepeater()
{
var r=Builder.CreateListOfSize(20.Build();
this.myRepeater.DataSource=r;
this.myRepeater.DataBind();
}
只需在
ItemDataBound
事件中修改已绑定的特定值,就可以使用itemdindex
属性
<asp:Repeater runat="server" ID="myRepeater" OnItemDataBound="myRepeater_ItemDataBound">
<ItemTemplate>
<asp:Label Text='<%# Eval("Id") %>' runat="server" ID="myRepeaterLabel" />
</ItemTemplate>
</asp:Repeater>
输出:
已编辑
我不确定这是否有帮助,但您应该像这样绑定中继器:
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
this.BindRepeater();
}
}
private void BindRepeater()
{
var r = Builder<Product>.CreateListOfSize(20).Build();
this.myRepeater.DataSource = r;
this.myRepeater.DataBind();
}
受保护的无效页面加载(对象发送方,事件参数e)
{
如果(!this.IsPostBack)
{
这个.BindRepeater();
}
}
专用void BindRepeater()
{
var r=Builder.CreateListOfSize(20.Build();
this.myRepeater.DataSource=r;
this.myRepeater.DataBind();
}
只需修改
ItemDataBound
eventNikhil中已绑定的特定值,我编辑了我的问题。你能再看一遍吗?Nikhil,我编辑了我的问题。你能再看看吗?我想我犯了一个算法错误。因为所有图表都显示相同的数据。老实说,您在视图中放置了太多的逻辑,我会将逻辑抽象到视图模型中,然后尽量使用数据绑定。我不知道您正在使用的RadChart
控件,但代码对我来说似乎没有问题,我的意思是您正在使用以下方法获得每个rad控件的正确实例:RadChart1=(RadChart)e.Item.FindControl(“RadChart1”)代码>只有一件事请记住,ItemDataBound
事件是为绑定在Repeater
中的每个元素触发的。也许我错了,但是您似乎想在这个事件中绑定整个Repeater,这是错的,事实是您将这一行RadChart1=(RadChart)e.Item.FindControl(“RadChart1”)对于每个
语句,中的code>会让我想到这一点,我想我犯了一个算法错误。因为所有图表都显示相同的数据。老实说,您在视图中放置了太多的逻辑,我会将逻辑抽象到视图模型中,然后尽量使用数据绑定。我不知道您正在使用的RadChart
控件,但代码对我来说似乎没有问题,我的意思是您正在使用以下方法获得每个rad控件的正确实例:RadChart1=(RadChart)e.Item.FindControl(“RadChart1”)代码>只有一件事请记住,ItemDataBound
事件是为绑定在Repeater
中的每个元素触发的。也许我错了,但是您似乎想在这个事件中绑定整个Repeater,这是错的,事实是您将这一行RadChart1=(RadChart)e.Item.FindControl(“RadChart1”)在中,对于每一个语句,code>都让我想到了这一点