好的,所以我的 ASP 页面上有一个表格,如下所示:
<asp:Table ID="attachedFiles" runat="server" BorderColor="LightGray" BorderWidth="1" ViewStateMode="Enabled">
<asp:TableRow ID = "attachedFilesRow" runat="server">
<asp:TableCell ID="exampleCell" runat="server" Visible="false" >
<asp:Label runat="server" Text="" />
<asp:ImageButton runat="server" ImageAlign="Middle" ImageUrl="~/images/kill.png" OnClick="removeAttachment" />
</asp:TableCell>
</asp:TableRow>
</asp:Table>
我在此处创建的示例单元格不可见,因为我仅将其用作将在后面的代码中添加的其他单元格的模板:
TableCell cell = new TableCell();
TableRow row = new TableRow();
cell = exampleCell;
row = attachedFilesRow;
((Label)cell.Controls[0]).Text = fileName;
cell.Visible = true;
row.Cells.Add(cell);
attachedFilesRow = row;
attachedFilesRow.DataBind();
后面代码中的代码在 ASP 页面上的按钮的 onClick 方法中。这个想法是,如果用户想要添加附件,他们单击“添加附件”,然后将一个单元格添加到已经存在的表格中。该单元格应该看起来像这样 [filenName.txt X],其中 X 是一个 ImageButton,以便用户可以单击它并删除附件。
我的问题是每次用户添加附件时,以前的 TableCell 都会被新的 TableCell 替换,而不是添加到 TableRow 中。我想这可能是因为我正在创建一个 TableCell 然后将它设置为等于一个已经存在的表格单元格实例所以我尝试了这个:
ASP:
<asp:Table ID="attachedFiles" runat="server" BorderColor="LightGray" BorderWidth="1" ViewStateMode="Enabled">
<asp:TableRow ID = "attachedFilesRow" runat="server">
</asp:TableRow>
</asp:Table>
代码背后:
TableCell cell = new TableCell();
ImageButton button = new ImageButton();
button.ImageUrl = "~/images/kill.png";
button.Attributes.Add("onclick", "removeAttachment");
Label label = new Label();
label.Text = fileName;
cell.Controls.Add(button);
cell.Controls.Add(label);
attachedFilesRow.Cells.Add(cell);
我也尝试了两种方法来添加 attachFilesRow.DataBind(); 到最后,并尝试了这两种方法来实例化新的行和单元格对象,而不是直接使用 ASP 页面中的现有对象。这些东西似乎都没有起到太大的作用。
tl; dr每次我在 buttonClick 上将 TableCell 添加到现有表格时,它都会替换我表格中的另一个单元格,而不是添加到其中。
编辑:
我不一定要添加新行...这就是我想要的:
用户添加一个附件后:[fileName.txt X]
后两个:[fileName.txt X] [fileName2.txt X]
三后:[fileName.txt X][fileName2.txt X][fileName3.txt X]
它基本上是一个行表,如果有意义的话,可以添加列或单元格。