注: この質問のコードを更新して、例を少し明確にし、以下のカール アンダーソンによって提供されたサンプル コードを活用しました。また、達成する必要があるものを完成させるための他の方法にもオープンです。
私は、リクエストごとに利用される場合と利用されない場合がある複数のチェックボックスを含むフォームを作成中です。DetailsView グリッドのこれらのチェックボックスの下に、すべてをチェックする必要がある場合にのみボックスをチェックする (チェックおよびチェック解除するボタンではなく) ボタンを作成しようとしています。以下のコードからわかるように、このフォームのさまざまなタイプの情報を保持するチェックボックスを囲む複数のテキスト ボックス/BoundFields があります。「すべてのチェックボックスをチェック」ボタンの複雑さを追加しないフォームは、フロントエンドおよびデータベースへの書き込み時に問題なく機能します。
私が直面している現在のハードルの下のコードを使用すると、ボタンがすべてのチェックボックスを一度にチェックするだけでなく、ページが読み込まれたときにこのエラーを乗り越えることができます。
型 'System.Web.UI.WebControls.TableCell' を 'System.Web.UI.WebControls.CheckBox' に、参照変換、ボックス化変換、ボックス化解除変換、ラッピング変換、または null 型変換を介して変換できません
同様の(正確ではない)エラーに関する私の調査から、チェックボックスを他の形式に変換する必要があります。私はこれまでこのシナリオに直面したことがなく、教育的な参考文献を探すだけでなく、変換部分だけでなく、正確かつ最新の (過去数年以内の) 参考文献を解決する方法についてのある種の指針を探しています。ボタンが 19 個のチェックボックスすべてを正しくチェックするというより大きな問題を解決できます。
ここで何が間違っていますか?これは、DetailsView で実行したい結果を取得する正しい方法ですか? これを解決する方法を学ぶだけでなく、この課題の背後にある理論/ロジックも学びたいので、正しい方法で学ぶことができます.
aspx コード。
(Note some cosmetic code for the details view has been omitted)
<%@ Page Title="Test Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="form2.aspx.cs" Inherits="form2" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="FeaturedContent" Runat="Server">
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="MainContent" Runat="Server">
<asp:DetailsView ID="DetailsView" runat="server" AutoGenerateColumns="False" CellPadding="4" DataSourceID="SqlDataSource1" ForeColor="#333333" GridLines="None">
<AlternatingRowStyle BackColor="White" />
<insert asp cosmetic gobbledy gook here>
<Fields>
<asp:BoundField DataField="Field_1" HeaderText="Ticket Number" SortExpression="Field_1" />
<asp:BoundField DataField="Field 2" HeaderText="Field 2" SortExpression="Field_2" />
<asp:BoundField DataField="Field_3" HeaderText="Field 3" SortExpression="Field_3" />
<asp:BoundField DataField="Field_4" HeaderText="Field 4" SortExpression="Field_4" />
<asp:BoundField DataField="Field_5" HeaderText="Field 5" SortExpression="Field_5" />
<asp:BoundField DataField="Field_6" HeaderText="Field 6" SortExpression="Field_6" />
<asp:BoundField DataField="Field_7" HeaderText="Field 7" SortExpression="Field_7" />
<asp:BoundField DataField="Field_8" HeaderText="Field 8" SortExpression="Field_8" />
<asp:BoundField DataField="Field_9" HeaderText="Field 9" SortExpression="Field_9" />
<asp:BoundField DataField="Field_10" HeaderText="Field 10" SortExpression="Field_10" />
<asp:CheckBoxField DataField="Check_Box_1" HeaderText="Check Box 1" SortExpression="Check_Box_1" />
<asp:CheckBoxField DataField="Check_Box_2" HeaderText="Check Box 2" SortExpression="Check_Box_2" />
<asp:CheckBoxField DataField="Check_Box_3" HeaderText="Check Box 3" SortExpression="Check_Box_3" />
<asp:CheckBoxField DataField="Check_Box_4" HeaderText="Check Box 4" SortExpression="Check_Box_4" />
<asp:CheckBoxField DataField="Check_Box_5" HeaderText="Check Box 5" SortExpression="Check_Box_5" />
<asp:CheckBoxField DataField="Check_Box_6" HeaderText="Check Box 6" SortExpression="Check_Box_6" />
<asp:CheckBoxField DataField="Check_Box_7" HeaderText="Check Box 7" SortExpression="Check_Box_7" />
<asp:CheckBoxField DataField="Check_Box_8" HeaderText="Check Box 8" SortExpression="Check_Box_8" />
<asp:CheckBoxField DataField="Check_Box_9" HeaderText="Check Box 9" SortExpression="Check_Box_9" />
<asp:CheckBoxField DataField="Check_Box_10" HeaderText="Check Box 10" SortExpression="Check_Box_10" />
<asp:CheckBoxField DataField="Check_Box_11" HeaderText="Check Box 11" SortExpression="Check_Box_11" />
<asp:CheckBoxField DataField="Check_Box_12" HeaderText="Check Box 12" SortExpression="Check_Box_12" />
<asp:CheckBoxField DataField="Check_Box_13" HeaderText="Check Box 13" SortExpression="Check_Box_13" />
<asp:CheckBoxField DataField="Check_Box_14" HeaderText="Check Box 14" SortExpression="Check_Box_14" />
<asp:CheckBoxField DataField="Check_Box_15" HeaderText="Check Box 15" SortExpression="Check_Box_15" />
<asp:CheckBoxField DataField="Check_Box_16" HeaderText="Check Box 16" SortExpression="Check_Box_16" />
<asp:CheckBoxField DataField="Check_Box_17" HeaderText="Check Box 17" SortExpression="Check_Box_17" />
<asp:CheckBoxField DataField="Check_Box_18" HeaderText="Check Box 18" SortExpression="Check_Box_18" />
<asp:CheckBoxField DataField="Check_Box_19" HeaderText="Check Box 19" SortExpression="Check_Box_19" />
<asp:ButtonField ButtonType="Button" CommandName="btnSelectAll" Text="Select/Check All Servers"
<asp:BoundField DataField="Field_11" HeaderText="Field 11" SortExpression="Field_11" />
<asp:BoundField DataField="Field_12" HeaderText="Field 12" SortExpression="Field_12" />
<asp:BoundField DataField="Field_13" HeaderText="Field 13" SortExpression="Field_13" />
<asp:CommandField ButtonType="Button" NewText="CreateRecord" ShowInsertButton="True" />
</Fields>
<more asp non essential cosmetic gobbledy gook>
</asp:DetailsView>
<asp:SqlDataSource ID="SqlDataSource1" ConnectionString="<%$ ConnectionStrings:test_form_connect %>" runat="server" InsertCommand="INSERT INTO [test].[detailsview_test_form] ([Field_1], [Field_2], [Field_3], [Field_4], [Field_5], [Field_6], [Field_7], [Field_8], [Field_9], [Field_10], [Check_Box_1], [Check_Box_2], [Check_Box_3], [Check_Box_4], [Check_Box_5], [Check_Box_6], [Check_Box_7], [Check_Box_8], [Check_Box_9], [Check_Box_10], [Check_Box_11], [Check_Box_12], [Check_Box_13], [Check_Box_14], [Check_Box_15], [Check_Box_16], [Check_Box_17], [Check_Box_18], [Check_Box_19], [Field_11], [Field_12], [Field_13]) VALUES (@Field_1, @Field_2, @Field_3, @Field_4, @Field_5, @Field_6, @Field_7, @Field_8, @Field_9, @Field_10, @Check_Box_1, @Check_Box_2, @Check_Box_3, @Check_Box_4, @Check_Box_5, @Check_Box_6, @Check_Box_7, @Check_Box_8, @Check_Box_9, @Check_Box_10, @Check_Box_11, @Check_Box_12, @Check_Box_13, @Check_Box_14, @Check_Box_15, @Check_Box_16, @Check_Box_17, @Check_Box_18, @Check_Box_19, @Field_11, @Field_12, @Field_13) ">
<InsertParameters>
<asp:Parameter Name="Field_1" />
<asp:Parameter Name="Field_2" />
<asp:Parameter Name="Field_3" />
<asp:Parameter Name="Field_4" />
<asp:Parameter Name="Field_5" />
<asp:Parameter Name="Field_6" />
<asp:Parameter Name="Field_7" />
<asp:Parameter Name="Field_8" />
<asp:Parameter Name="Field_9" />
<asp:Parameter Name="Field_10" />
<asp:Parameter Name="Check_Box_1" />
<asp:Parameter Name="Check_Box_2" />
<asp:Parameter Name="Check_Box_3" />
<asp:Parameter Name="Check_Box_4" />
<asp:Parameter Name="Check_Box_5" />
<asp:Parameter Name="Check_Box_6" />
<asp:Parameter Name="Check_Box_7" />
<asp:Parameter Name="Check_Box_8" />
<asp:Parameter Name="Check_Box_9" />
<asp:Parameter Name="Check_Box_10" />
<asp:Parameter Name="Check_Box_11" />
<asp:Parameter Name="Check_Box_12" />
<asp:Parameter Name="Check_Box_13" />
<asp:Parameter Name="Check_Box_14" />
<asp:Parameter Name="Check_Box_15" />
<asp:Parameter Name="Check_Box_16" />
<asp:Parameter Name="Check_Box_17" />
<asp:Parameter Name="Check_Box_18" />
<asp:Parameter Name="Check_Box_19" />
<asp:Parameter Name="Field_11" />
<asp:Parameter Name="Field_12" />
<asp:Parameter Name="Field_13" />
</InsertParameters>
</asp:SqlDataSource>
</asp:Content>
...そしてcsコード:
using System;
using System.Configuration;
using System.Collections;
using System.Data;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class form2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void DetailsView1_ItemCommand(Object sender, DetailsViewCommandEventArgs e)
{
foreach (Details
if (e.CommandName == "btnSelectAll")
{
DetailsViewRow row = DetailsView1.Rows[9];
(row.Cells[10] as CheckBox).Checked = true;
DetailsViewRow row1 = DetailsView1.Rows[10];
(row1.Cells[11] as CheckBox).Checked = true;
DetailsViewRow row2 = DetailsView1.Rows[11];
(row.Cells[12] as CheckBox).Checked = true;
DetailsViewRow row3 = DetailsView1.Rows[12];
(row.Cells[13] as CheckBox).Checked = true;
DetailsViewRow row4 = DetailsView1.Rows[13];
(row.Cells[14] as CheckBox).Checked = true;
DetailsViewRow row5 = DetailsView1.Rows[14];
(row.Cells[15] as CheckBox).Checked = true;
DetailsViewRow row6 = DetailsView1.Rows[15];
(row.Cells[16] as CheckBox).Checked = true;
DetailsViewRow row7 = DetailsView1.Rows[16];
(row.Cells[17] as CheckBox).Checked = true;
DetailsViewRow row8 = DetailsView1.Rows[17];
(row.Cells[18] as CheckBox).Checked = true;
DetailsViewRow row9 = DetailsView1.Rows[18];
(row.Cells[19] as CheckBox).Checked = true;
DetailsViewRow row10 = DetailsView1.Rows[19];
(row.Cells[20] as CheckBox).Checked = true;
DetailsViewRow row11 = DetailsView1.Rows[20];
(row.Cells[21] as CheckBox).Checked = true;
DetailsViewRow row12 = DetailsView1.Rows[21];
(row.Cells[22] as CheckBox).Checked = true;
DetailsViewRow row13 = DetailsView1.Rows[22];
(row.Cells[23] as CheckBox).Checked = true;
DetailsViewRow row14 = DetailsView1.Rows[23];
(row.Cells[24] as CheckBox).Checked = true;
DetailsViewRow row15 = DetailsView1.Rows[24];
(row.Cells[25] as CheckBox).Checked = true;
DetailsViewRow row16 = DetailsView1.Rows[25];
(row.Cells[26] as CheckBox).Checked = true;
DetailsViewRow row17 = DetailsView1.Rows[26];
(row.Cells[27] as CheckBox).Checked = true;
DetailsViewRow row18 = DetailsView1.Rows[27];
(row.Cells[28] as CheckBox).Checked = true;
DetailsViewRow row19 = DetailsView1.Rows[28];
(row.Cells[29] as CheckBox).Checked = true;
}
}
}