我有一個gridview顯示所有旅行 - 在該gridview中我有一箇中繼器,顯示在那次旅行期間訪問的國家(一對多)。我的轉發器假設要抓取tripID,然後填充填充轉發器的數據源。不幸的是,我的轉發器剛剛被填入最後一次指定的tripID。GridView中的中繼器 - 只從最後一個gridview ID拉動中繼器(導致每個中繼器是相同的)
<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();
}
試試看,似乎沒有工作:( – Spooks 2010-08-16 21:25:06