ASP.Net'e oldukça yeni geldim ve bu konuda doğru şekilde gittiğimden emin değilim. "Görüntü" nesneleri listesine bağlı bir Tekrarlayıcı var. Her RepeaterItem içinde bir onay kutusu ve kontrol edilen Image nesnelerinin bazı özelliklerini görüntülemek istediğim bir OnClick olayı düğmem var.ASP.Net - RepeaterItem'den veri alma
Etiket güncelleniyor, ancak meta veriler boş. DataBinder.Eval (i.DataItem, "DosyaAdı") null geri geliyor, ama emin değilim neden? Muhtemelen onay kutusundaki geri gönderme sorunlara yol açtığını sanıyordum, ancak herhangi bir geri gönderme gerçekleşmeden önce verileri görüntülemeye çalışırsam yine de aynı sorunu yaşıyorum, bu yüzden öznitelikleri doğru bir şekilde almadım. Yoksa bunu tamamen yanlış yoldan mı yapıyorum? Herhangi bir yardım takdir edildi.
Kodu:
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' özelliği yalnızca ItembackBound' olayında, geri gönderilmeden önce kullanılabilir. Bu, MSDN üzerinde çok iyi bir şekilde belirtilmemiş, ancak tüm ASP.NET denetimleri boyunca tutarlı – jwiscarson