Настройте CheckBox в DetailsView - PullRequest
1 голос
/ 01 мая 2011

У меня есть DetailsView, который содержит CheckBoxField.Проблема в том, что я хочу, чтобы флажок был изменяемым даже в режиме только для чтения и в режиме вставки, его необходимо установить по умолчанию.Как мне решить эту проблему?

Я прилагаю кусок кода:

   <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>

Ответы [ 2 ]

1 голос
/ 01 мая 2011

Вы не можете сделать это с CheckBoxField, вы должны создать свой собственный шаблон для этого поля.

Сначала преобразуйте это поле в поле шаблона, затем вы сможете управлять шаблонами, которые будут 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>
0 голосов
/ 10 ноября 2018

Если параметры и оператор sql установлены правильно, добавление DataField = "yourField" в строку Checkbox сохранит значение этого флажка в базе данных.

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