Tôi khá mới đối với ASP.Net và tôi không chắc là mình đang đi đúng hướng. Tôi có một Repeater đó là ràng buộc vào một danh sách các đối tượng "Hình ảnh". Trong mỗi RepeaterItem là một hộp kiểm và tôi có một sự kiện OnClick, mà tôi muốn hiển thị một số thuộc tính của các đối tượng Image đã được kiểm tra.ASP.Net - Lấy dữ liệu từ RepeaterItem
Cập nhật nhãn, nhưng siêu dữ liệu trống. DataBinder.Eval (i.DataItem, "FileName") đang trở lại null, nhưng tôi không chắc chắn tại sao? Tôi nghĩ có lẽ postback từ hộp kiểm đã gây ra vấn đề nhưng tôi vẫn gặp vấn đề tương tự nếu tôi cố gắng hiển thị dữ liệu trước khi bất kỳ postback nào xảy ra, vì vậy có lẽ tôi không tìm nạp các thuộc tính một cách chính xác. Hoặc tôi đang đi về điều này một cách hoàn toàn sai? Bất kỳ trợ giúp nào được đánh giá cao.
Code:
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>
Thuộc tính 'DataItem' chỉ khả dụng trước khi đăng lại, trong sự kiện' ItemDataBound'. Điều này không được chỉ ra rất tốt trên MSDN, nhưng là nhất quán trong suốt tất cả các điều khiển ASP.NET – jwiscarson