【问题标题】:How to transform a custom CheckBoxList into an equivalent GridView?如何将自定义 CheckBoxList 转换为等效的 GridView?
【发布时间】:2011-08-16 08:37:50
【问题描述】:

我有这个自定义 CheckBoxList:

<CustomCheckBoxList runat="server" ID="ItemsCBL" DataSourceID="ItemsData"
    DataTextField="datacolumn" DataValueField="datacolumn"
    SelectedValues='<%# Bind("Items") %>' />

SelectedValues 属性的类型为NHibernate.Collection.Generic.PersistentGenericBag&lt;string&gt;

如何将其转换为具有相同绑定功能的 GridView?

<GridView runat="server" ID="ItemsAllowed" ShowFooter="false" DataSourceID="ItemsData"
 AutoGenerateColumns="false">
<Columns>
  <asp:TemplateField HeaderText="UserAllowed">
    <ItemTemplate>
      <asp:CheckBox ID="cbUserAllowed" runat="server" />
    </ItemTemplate>
  </asp:TemplateField>
  <asp:TemplateField HeaderText="ItemList">
    <ItemTemplate>
      <asp:Literal ID="litItem" runat="server" Text='<%# Bind("datacolumn") %>' />
    </ItemTemplate>
  </asp:TemplateField>
</Columns>
</GridView>

我需要将其转换为 GridView,因为我需要添加一个额外的复选框列。

感谢回复!

【问题讨论】:

    标签: c# data-binding gridview webforms checkboxlist


    【解决方案1】:

    我认为您所做的是正确的,但您需要在复选框中添加“已选中”属性以调用服务器端函数来检查当前复选框是否在所选项目中。

    【讨论】:

    • 我该怎么做?绑定必须是两种方式
    • 返回的数据中是否有一列指定复选框是否被选中?!
    • SelectedValues 的类型为 NHibernate.Collection.Generic.PersistentGenericBag。在其中有用于检查标签的字符串。 CustomCheckBoxList 位于也是数据绑定的 FormView 内,SelectedValues='' 在父字段 'Items' 上完成。
    • 如果要允许双向绑定,则必须使网格的返回数据包含一个值已选中或未选中的列,以便我们可以在其上调用“绑定”函数。
    【解决方案2】:

    解决方案是手动进行双向数据绑定。

    在 OnRowDataBound 事件处理程序上从 DataSource 绑定。

    并在父控件的 OnRowEditing 事件处理程序中绑定到 DataSource。

    示例:ASP.NET data bind two-way, bi-directional from code behind

    【讨论】:

      猜你喜欢
      • 2017-07-08
      • 1970-01-01
      • 1970-01-01
      • 2011-01-11
      • 2010-09-26
      • 2015-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多