前提・実現したいこと
派遣会社のスタッフ情報などを管理するシステムを作っています。
アプリケーションはasp.net(C#)でデータベースはPostgreSQLです。開発経験が浅くわかりづらい表現があるかもしれませんがどうかよろしくお願いいたします。では本題です。
スタッフ情報の一覧画面ではGridViewを利用し、一覧から特定のスタッフを選択し単票のCRUD操作についてはFormViewから、データバインド式を利用しようと思っておりました。
発生している問題・エラーメッセージ
FormViewのInsertモードでのCheckBoxは実装できましたが、EditモードのCheckBoxが実装できません。編集画面を開くとvisual studioから該当するCheckBoxの記述箇所でエラーメッセージが出力され、
「指定されたキャストは有効ではありません。」と表示されます。
該当のソースコード
<EditItemTemplate> <asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Bind("xxxxxx")' /> </EditItemTemplate>試したこと
当該列のデータ型を当初varchar(5)で定義し、TrueまたはFalseが格納されるようにしていました(実際アプリケーションから更新を行うとTrueまたはFalseが格納されます)。そこからBoolean型とBit型の変更を試し、アプリケーション側のasp:ParameterのType属性は初期値は既に挙がっているいずれの型もStringだったものをBoolean、Objectなどに変更しましたが、上記のエラーメッセージが出力されてしまいます。参考にした情報ではデータ定義に対して初期値、not nullの設定や、Bit型で定義するとあったんですが、SQLServerを利用したものが多くPostgreSQLによるデータバインド式の利用はあきらめてロジック側(asp.cs)で最初からデータの定義をしたほうが良いのか、悩んでおります。何卒よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
visual studio 2017
PostgreSQL 12.2
追記(202009022027)
ご指摘ありがとうございます。再度コードを記載します。
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:sampleConnectionString %>" DeleteCommand="DELETE FROM staffsample WHERE sscd = ?" InsertCommand="INSERT INTO staffsample (stfnm, blood, sbt, knmnikin, knmyakin) VALUES (?, ?, ?, ?, ?)" ProviderName="<%$ ConnectionStrings:sampleConnectionString.ProviderName %>" SelectCommand="SELECT * FROM staffsample" UpdateCommand="UPDATE staffsample SET stfnm = ?, blood = ?, sbt = ?, knmnikin = ?, knmyakin = ? WHERE sscd = ?"> <DeleteParameters> <asp:Parameter Name="sscd" Type="Int32" /> </DeleteParameters> <InsertParameters> <asp:Parameter Name="stfnm" Type="String" /> <asp:Parameter Name="blood" Type="String" /> <asp:Parameter Name="sbt" Type="String" /> <asp:Parameter Name="knmnikin" Type="String" /> <asp:Parameter Name="knmyakin" Type="String" /> </InsertParameters> <UpdateParameters> <asp:Parameter Name="stfnm" Type="String" /> <asp:Parameter Name="blood" Type="String" /> <asp:Parameter Name="sbt" Type="String" /> <asp:Parameter Name="knmnikin" Type="String" /> <asp:Parameter Name="knmyakin" Type="String" /> <asp:Parameter Name="sscd" Type="Int32" /> </UpdateParameters> </asp:SqlDataSource> <br /> <asp:FormView ID="FormView1" runat="server" AllowPaging="True" DataSourceID="SqlDataSource1" DataKeyNames="sscd"> <EditItemTemplate> <p>■基本情報</p> <table> <tr> <td rowspan="3">氏名</td> <td>氏名</td> <td> <asp:TextBox ID="stfnmTB" runat="server" Text='<%# Bind("stfnm") %>' /> </td> </tr> <tr> <td>血液型</td> <td> <asp:DropDownList ID="bloodDDL" runat="server" SelectedValue='<%# Bind("blood") %>'> <asp:ListItem></asp:ListItem> <asp:ListItem>A型</asp:ListItem> <asp:ListItem>B型</asp:ListItem> <asp:ListItem>O型</asp:ListItem> <asp:ListItem>AB型</asp:ListItem> <asp:ListItem>不明</asp:ListItem> </asp:DropDownList> </td> </tr> <tr> <td>性別</td> <td> <asp:DropDownList ID="sbtDDL" runat="server" SelectedValue='<%# Bind("sbt") %>'> <asp:ListItem></asp:ListItem> <asp:ListItem Value="男">男性</asp:ListItem> <asp:ListItem Value="女">女性</asp:ListItem> </asp:DropDownList> </td> </tr> </table> <p>■勤務条件</p> <table> <tr> <td>希望時間</td> <td> <!--エラーが起きる箇所--> <asp:CheckBox ID="knmnikinCB" runat="server" Checked='<%# Bind("knmnikin") %>' /> 日勤 <br /> <asp:CheckBox ID="knmyakinCB" runat="server" Checked='<%# Bind("knmyakin") %>' /> 夜勤 <br /> </td> </tr> </table> <asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True" CommandName="Update" Text="更新" /> <asp:LinkButton ID="UpdateCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" Text="キャンセル" /> </EditItemTemplate> </asp:FormView>
回答1件
あなたの回答
tips
プレビュー