在导出到excel vb.net时如何在中继控件中做隐形checkbox?
嗨,所有我很新vb.net在这里,我从Repeater控制出口数据到Excel我做得很好,但在我的中继器控制我有一个checkbox,我只是不想显示在我的Excel中我怎么能排除它
<asp:Repeater ID="fillmrepeater" runat="server"> <HeaderTemplate> <tr> <td> Select </td> <td> Name </td> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td> <input type="checkbox" value='<%# DataBinder.Eval(Container.DataItem, "Id")%>' name="cP" id="cP"> </td> <td> <%# DataBinder.Eval(Container.DataItem("Name"), "Name")%>)%> </td> </tr> </ItemTemplate> </asp:Repeater>
并在导出到Excel时在代码隐藏
Private Sub exportExcel_Click(ByVal sender As System.Object, ByVal e As System.Web.UI.exportExcelClickEventArgs) Handles exportExcel_Click.Click For Each repter As RepeaterItem In fillmrepeater.Items If repter.ItemType = ListItemType.Item Or repter.ItemType = ListItemType.AlternatingItem Then Dim ckb As New CheckBox() CType(repter.FindControl("chkPerson"), CheckBox).Visible = False End If Next Response.Clear() Response.Buffer = True Response.AddHeader("Content-Disposition", "attachment; filename=report.xls;") Response.ContentType = "application/vnd.ms-excel" Dim sw As New StringWriter() Dim hw As New Html32TextWriter(sw) fillmrepeater.RenderControl(hw) Response.Write("<table>") Response.Write(sw.ToString()) Response.Write("</table>") Response.Flush() Response.End() END Sub END Class
在这里我得到对象引用没有设置为对象的实例,所以我在这里变空,我只需要使可见= false到checkbox框可以任何身体帮助我请
提前致谢
-
将
RunAt="server"
属性放在您的checkbox上,以便在代码隐藏中可用。<input type="checkbox" runat="server" value='<%# DataBinder.Eval(Container.DataItem, "Id")%>' name="chkPerson" id="chkPerson" />
-
修改你的代码如下:
For Each repter As RepeaterItem In fillmrepeater.Items If repter.ItemType = ListItemType.Item Or repter.ItemType = ListItemType.AlternatingItem Then CType(repter.FindControl("chkPerson"), HtmlInputCheckBox).Visible = False End If Next
编辑:
要隐藏标题行:
-
用
runat="server"
标记HeaderTemplate<TR>
,以便我们可以在代码隐藏中访问它。<HeaderTemplate> <tr runat="server" id="HeaderRow"> <td> Select </td> <td> Name </td> </tr> </HeaderTemplate>
-
[你现在已经知道该怎么办了:)]
Dim headerRow As HtmlTableRow = fillmrepeater.Controls(0).FindControl("HeaderRow") headerRow.Visible = False