私はDetailsView
which : insert を使用しています。デフォルトでチェックボックスをオンにしたいのですが、ユーザーはチェックボックスをオフに変更できますが、チェックボックスをバインドするには、使用する必要がDefaultMode
あります
Checked='<%# Bind("Cit_Visible") %>'
これにより、チェックボックスのデフォルトステータスがオフになります。どうすればこれを解決できますか?
私はDetailsView
which : insert を使用しています。デフォルトでチェックボックスをオンにしたいのですが、ユーザーはチェックボックスをオフに変更できますが、チェックボックスをバインドするには、使用する必要がDefaultMode
あります
Checked='<%# Bind("Cit_Visible") %>'
これにより、チェックボックスのデフォルトステータスがオフになります。どうすればこれを解決できますか?
データバインディング時にチェックボックスをオンにする場合は、チェックボックスのテキストプロパティに値を割り当てることができます。
<asp:CheckBox ID="chl" runat="Server" Checked="true" Text="<%# Bind('Cit_Visible') %>" />
コードビハインドでは、テキスト値にアクセスしてDBに保存できます
CheckBox MyCheckbox = new CheckBox();
MyCheckbox = (CheckBox)DetailsView1.FindControl("chl");
Response.Write(MyCheckbox.Checked);
DetailsView データ コントロールを使用していて、チェックボックスの値がある場合、すべての表示モードを処理する asp:CheckBoxField から始めることができます。チェックボックスのバインドを維持したいが、おそらく挿入のためにデフォルトをオンに設定したい場合は、次のことができます。
フィールドを TemplateField に変換します。これは、Visual Studio のデザイン ビューを使用するか、このタイプのブロックを置き換えることによって手動で行うことができます。
<asp:CheckBoxField DataField="Information" HeaderText="Information" SortExpression="Information" />
このようなコードのブロックで
<asp:TemplateField HeaderText="Information" SortExpression="Information">
<EditItemTemplate>
<asp:CheckBox ID="chkInformation" runat="server" Checked='<%# Bind("Information") %>' />
</EditItemTemplate>
<InsertItemTemplate>
<asp:CheckBox ID="chkInformation" runat="server" Checked='<%# Bind("Information") %>' />
</InsertItemTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkInformation" runat="server" Checked='<%# Bind("Information") %>' Enabled="false" />
</ItemTemplate>
</asp:TemplateField>
次に、チェックボックスのデフォルト値をチェックするように設定するには、分離コードでこれを行うことができます
Protected Sub dvInformation_PreRender(sender As Object, e As EventArgs) Handles dvInformation.PreRender
If CType(sender, DetailsView).CurrentMode = DetailsViewMode.Insert Then
Dim chk As Object = CType(sender, DetailsView).FindControl("chkInformation")
If chk IsNot Nothing AndAlso chk.GetType Is GetType(CheckBox) Then
CType(chk, CheckBox).Checked = True
End If
End If
End Sub
C# (VB から変換)
protected void dvInformation_PreRender(object sender, EventArgs e)
{
if (((DetailsView)sender).CurrentMode == DetailsViewMode.Insert) {
object chk = ((DetailsView)sender).FindControl("chkInformation");
if (chk != null && object.ReferenceEquals(chk.GetType(), typeof(CheckBox))) {
((CheckBox)chk).Checked = true;
}
}
}
これは、サポートするデータベースの値が null 以外のビット フィールドである場合に最適です。