我對ASP.Net非常陌生,我不確定我是否會以正確的方式進行操作。我有一個綁定到「Image」對象列表的Repeater。在每個RepeaterItem中都有一個複選框,並且我有一個按鈕OnClick事件,我想要顯示選中的Image對象的某些屬性。ASP.Net - 從RepeaterItem獲取數據
標籤更新,但元數據爲空。 DataBinder.Eval(i.DataItem,「FileName」)返回null,但我不確定爲什麼?我想也許回覆從複選框引起的問題,但我仍然遇到同樣的問題,如果我試圖在任何回發發生之前顯示數據,所以也許我沒有正確地獲取屬性。還是我完全用錯誤的方式去解決這個問題?任何幫助讚賞。
代碼:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
string importPath = Server.MapPath("~/Images/ForImport");
ImageProcessor processor = new ImageProcessor(importPath);
rptImageList.DataSource = processor.ImageList;
rptImageList.DataBind();
}
}
protected void btnImport_Click(object sender, EventArgs e)
{
foreach (RepeaterItem i in rptImageList.Items)
{
CheckBox chk = i.FindControl("chkSelectImage") as CheckBox;
if (chk.Checked)
{
Testlabel.Text += "Selected: " + DataBinder.Eval(i.DataItem, "FileName");
}
}
}
HTML:
<asp:Repeater ID="rptImageList" runat="server">
<ItemTemplate>
<div class="photoinstance">
<asp:Image runat="server" ImageUrl='<%#"Images/ForImport/" +DataBinder.Eval(Container.DataItem, "FileName") %>' />
<asp:CheckBox ID="chkSelectImage" AutoPostBack="true" runat="server"/>
<p><%#Eval("FileName")%> - <%#Eval("FileSize")%> bytes</p>
</div>
</ItemTemplate>
</asp:Repeater>
'DataItem'屬性只在回發之前在ItemDataBound事件中可用。這在MSDN上沒有很好地指出,但在所有ASP.NET控件中都是一致的 – jwiscarson