【问题标题】:Customize CheckBox in DetailsView在 DetailsView 中自定义 CheckBox
【发布时间】:2011-04-30 21:20:46
【问题描述】:

我有一个包含 CheckBoxField 的 DetailsView。问题是我希望复选框即使在只读模式和插入模式下也可以更改,默认情况下必须选中它。我该如何解决这个问题?

我附上一段代码:

   <asp:DetailsView ID="newsDetail" runat="server" DataSourceID="SqlDataSourceNews"
                    AutoGenerateRows="False" DataKeyNames="id">
                    <Fields>
                        <asp:TemplateField FooterText="View at startpage" HeaderText="View" SortExpression="view">
                           <ItemTemplate>
                              <asp:CheckBox runat="server" ID="view" Checked='<%# Eval("view") %>' />
                           </ItemTemplate>
                           <InsertItemTemplate>
                              <asp:CheckBox ID="viewInsert" Checked="true" runat="server" />
                           </InsertItemTemplate>
                           <EditItemTemplate>
                              <asp:CheckBox runat="server" ID="view" Checked='<%# Eval("view") %>' />
                           </EditItemTemplate>
                        </asp:TemplateField>
                        ...
                        <asp:CommandField ShowEditButton="True" ShowInsertButton="True" NewText="New" ButtonType="Button"
                            EditText="Edit" CancelText="Avbryt" DeleteText="Delete" InsertText="Add"
                            SelectText="Select" UpdateText="Uppdatera" />
                    </Fields>
                </asp:DetailsView>

<asp:SqlDataSource ID="SqlDataSourceNews" runat="server" ConnectionString="<%$ ConnectionStrings:newsConnectionString %>"
            DeleteCommand="DELETE FROM [nyheter] WHERE [id] = @id" InsertCommand="INSERT INTO [nyheter] ([view], [headline], [post], [pic], [pic2]) VALUES (@view, @headline, @post, @pic, @pic2)"
            SelectCommand="SELECT [id], [view], [date], [headline], [post], [pic], [pic2] FROM [nyheter] WHERE ([id] = @id)"
            UpdateCommand="UPDATE [nyheter] SET [view] = @view, [headline] = @headline, [post] = @post, [pic] = @pic, [pic2] = @pic2  WHERE [id] = @id">
            <SelectParameters>
                <asp:ControlParameter ControlID="newsList" Name="id" PropertyName="SelectedValue"
                    Type="Int32" />
            </SelectParameters>
            <DeleteParameters>
                <asp:Parameter Name="id" Type="Int32" />
            </DeleteParameters>
            <UpdateParameters>
                <asp:Parameter Name="view" Type="Boolean" />
                <asp:Parameter Name="headline" Type="String" />
                <asp:Parameter Name="post" Type="String" />
                <asp:Parameter Name="pic" Type="String" />
                <asp:Parameter Name="pic3" Type="String" />
            </UpdateParameters>
            <InsertParameters>
                <asp:Parameter Name="view" Type="Boolean" />
                <asp:Parameter Name="headline" Type="String" />
                <asp:Parameter Name="post" Type="String" />
                <asp:Parameter Name="pic" Type="String" />
                <asp:Parameter Name="pic2" Type="String" />
            </InsertParameters>
        </asp:SqlDataSource>

【问题讨论】:

    标签: c# asp.net sql detailsview


    【解决方案1】:

    CheckBoxField 无法做到这一点,您必须为此字段创建自己的模板。

    首先,将此字段转换为模板字段,然后您将能够控制将成为 CheckBoxes 的模板。

    然后,您会发现这些 CheckBoxes 在插入和编辑模板中启用,在 ItemTmplate 中禁用。您只需要启用它。

    代码:

    <asp:TemplateField HeaderText="view" SortExpression="view">
        <InsertItemTemplate>
            <asp:CheckBox ID="viewCheckBox" runat="server" Checked='<%# Bind("view") %>' />
        </InsertItemTemplate>
        <ItemTemplate>
            <asp:CheckBox ID="viewCheckBox" runat="server" Checked='<%# Bind("view") %>' 
                Enabled="true" />
        </ItemTemplate>
    </asp:TemplateField>
    

    【讨论】:

    • 我知道我必须使用一个模板,但没有设法让它工作。我将代码更改为我所做的,但这不起作用
    • 但是当我更改复选框时,我该怎么做才能更改数据库?以及如何在插入时默认选中复选框?
    • @magol:您必须为 CheckBox 创建自己的 CheckedChanged 偶数处理程序
    【解决方案2】:

    假设参数和 sql 语句设置正确,将 DataField="yourField" 添加到 Checkbox 行会将复选框的值保存到数据库中。

    <EditItemTemplate>
      <asp:CheckBox ID="CheckBox1" DataField="yourField" runat="server" checked='<%# Bind("yourField")%>'></asp:CheckBox>
    </EditItemTemplate> 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-04
      • 1970-01-01
      • 1970-01-01
      • 2012-12-14
      • 2021-10-21
      • 2017-07-27
      • 2018-12-08
      • 2022-01-26
      相关资源
      最近更新 更多