我已經具有一個asp gridview的如下一個中繼器:的GridView內的中繼器ondataitembound網格視圖重新綁定
<asp:Repeater ID="rep" runat="server" OnItemDataBound="rep_ItemDataBound">
<ItemTemplate>
<asp:GridView ID="grdVw" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="Link" HeaderText="Link" />
</Columns>
</asp:GridView>
</ItemTemplate>
</asp:Repeater>
然後在頁加載我綁定一個datatable
包含20行到這個中繼器:
這是我的網頁加載代碼
protected void Page_Load(object sender, EventArgs e){
//dummy code for testing
table.Columns.Add("Name");
table.Columns.Add("Link");
DataRow row ;
for (int i = 0; i <20; i++)
{
row = table.NewRow();
row[0] = "dsadsd";
row[1] = "text";
table.Rows.Add(row);
}
for (int i = 0; i < 10; i++)
{
ds.Tables.Add(table.Copy());
}
rep.DataSource = ds;
rep.DataBind();
}
然後我處理直放站的ItemDataBoundevent
這樣的:
protected void rep_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item)
{
GridView grdVw = e.Item.FindControl("grdVw") as GridView;
grdVw.DataSource = table;
grdVw.DataBind();
}
}
令人驚訝的結果是20 gridviews!我想這是因爲ItemDataBound
在table
的每一行發生。所以在這個處理程序事件中,我將表綁定了20次,但這是否合乎邏輯或我做錯了什麼?
我可以很容易地有一個標誌,以確保數據已綁定到表只有一次,但如果我已經綁定數據集到中繼器?我如何處理對網格視圖的綁定?
如果你綁定一個表有20行中繼器,每一行中有一個GridView,那麼你毫無疑問會有20個網格視圖。這正是你所說的。我想你的gridviews數據需要來自另一個變量。你期望發生什麼?期望的結果是什麼? – 2013-03-06 20:44:43
我想綁定一個數據集到中繼器,所以我可以使用這個數據集中表格的數量來表示gridviews,我應該怎麼做數據綁定,@ Pow-Ian是我可以看到的 – user690069 2013-03-06 20:47:01
,所以你不是基於數據集中表的數量,您想要在包含數據集中每個表的數據的每一行中綁定gridview。那麼你的問題在你的問題上是錯誤的。對的,這是可能的。 – 2013-03-06 20:59:46