У меня есть сетка, которая отображает все поездки - в пределах этой сетки у меня есть повторитель, который отображает страны, которые посетили во время этой поездки (одна ко многим).Предполагается, что мой ретранслятор захватывает tripID, а затем заполняет источник данных, который заполняет ретранслятор.К сожалению, мой ретранслятор просто заполняется последним указанным tripID.
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="pkiTripID"
DataSourceID="SqlDataSource2" PageSize="20" AllowPaging="True"
Width="100%" AllowSorting="True"
GridLines="None" onrowdatabound="GridView1_RowDataBound1">
<Columns>
<asp:BoundField DataField="TripType1" HeaderText="Type" SortExpression="TripType1" />
<asp:BoundField DataField="RegionName" HeaderText="Region" SortExpression="RegionName" />
<asp:TemplateField HeaderText="Country" HeaderStyle-ForeColor="#FF7900">
<ItemTemplate>
<asp:Repeater ID="RepeatCountry" runat="server"
DataSourceID="dsCountryByTripID" onitemdatabound="RepeatCountry_ItemDataBound">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "CountryName") %>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
<HeaderStyle ForeColor="#FF7900" />
</asp:TemplateField>
<asp:BoundField DataField="OverallRating" HeaderText="Trip Rating"
SortExpression="OverallRating" />
<asp:BoundField DataField="DepartureDate" HeaderText="Date" SortExpression="DepartureDate"
DataFormatString="{0:MMM-dd-yyyy}" HtmlEncode="false" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="dsCountryByTripID" runat="server"
ConnectionString="<%$ ConnectionStrings:myDB %>"
SelectCommand="spSelectCountriesByTripID" SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:Parameter Type="Int32" Name="tripID" DefaultValue="96" />
</SelectParameters>
</asp:SqlDataSource>
И мой код
protected void GridView1_RowDataBound1(object sender, GridViewRowEventArgs e)
{
Repeater rp = (Repeater)e.Row.FindControl("RepeatCountry");
if (e.Row.RowType == DataControlRowType.DataRow)
{
dsCountryByTripID.SelectParameters.Clear();
DataRowView drv = (DataRowView)e.Row.DataItem;
string tripID = (drv["pkiTripId"]).ToString();
dsCountryByTripID.SelectParameters.Clear();
dsCountryByTripID.SelectParameters.Add("tripID", DbType.Int32, tripID);
////gv2.DataBind();
//e.Row.DataBind();
}
}
protected void RepeatCountry_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
e.Item.DataBind();
}