【问题标题】:How to create a custom control dynamically?如何动态创建自定义控件?
【发布时间】:2013-01-23 08:15:32
【问题描述】:

让我直说。我设法用单个checkbox 创建了一个自定义Gridview,但我的问题是我想包含多个动态Checkbox

这是我的代码:

<%@ Control Language="C#" AutoEventWireup="true" EnableTheming="true" CodeFile="GridviewControl.ascx.cs" Inherits="UserControl_GridviewControl" %>

<link href="../Template/CSS/Style.css"type="text/css" rel="Stylesheet" />

<div>
  <span id="Span5" style="font-family: Arial; font-size:12px;" ><asp:Label ID="lblCount" runat="server" Text="0" Font-Bold="true"></asp:Label>
                     Record/s</span>
  <span class="maintenance-btns">
     <asp:Button ID="btnNew" runat="server" Text=" New " onclick="btnNew_Click"/>
     <asp:Button ID="btnDel" runat="server" Text=" Delete " onclick="btnDel_Click"/>
  </span>
</div>

<asp:Panel ID="pnlPc" runat="server" CssClass="div-grid" ScrollBars="Auto">  
<asp:GridView ID="gvListing" runat="server" AllowPaging="True" AutoGenerateSelectButton="true"
            OnRowDataBound="gvListing_RowDataBound" skinid="gvListing"
            onselectedindexchanged="gvListing_SelectedIndexChanged"
            onpageindexchanging="gvListing_PageIndexChanging" PageSize="50" >

<FooterStyle CssClass="grid-footer" />

<Columns>
<asp:TemplateField HeaderText="CheckAll">
<HeaderTemplate>
<asp:CheckBox ID="chkSelectAll" runat="server" AutoPostBack="true" 
OnCheckedChanged="chkSelectAll_CheckedChanged" CssClass="select-all"/>
</HeaderTemplate>

<ItemTemplate>
<asp:CheckBox ID="chkSelect" runat="server" AutoPostBack="true" 
OnCheckedChanged="chkSelect_CheckedChanged" CssClass="listing-checkbox"/>
</ItemTemplate>

</asp:TemplateField>

</Columns>

</asp:GridView>
</asp:Panel>

在这个gridview 中,我在第一列只有一个checkboxes。我想把动态生成的checkboxes放在最后一列。

P.S.:如何通过动态创建 checkboxes 检索 id?

【问题讨论】:

标签: asp.net gridview checkbox


【解决方案1】:

你可以这样做

  protected void gvData_DataBound(object sender, EventArgs e) 
  {
    foreach (GridViewRow objRow in gvData.Rows)
    {
      TableCell tcCheckCell = new TableCell();
      var checkBox = new CheckBox();
      checkBox.CheckedChanged += checkBox_CheckedChanged;
      tcCheckCell.Controls.Add(checkBox);
      objRow.Cells.AddAt(0, tcCheckCell);
   }
  }
 void checkBox_CheckedChanged(object sender, EventArgs e)
 {
    //do something
 }

【讨论】:

  • 我有一个用于该网格视图的现有用户控件,我要在那里添加它吗?如果我在那里添加,我可以在 DataBind() 函数中添加复选框。假设我的数据来自 DataTable。
  • 您可以在数据绑定事件或行创建事件中执行此操作
猜你喜欢
  • 2014-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-06
相关资源
最近更新 更多