トップ回答者
ページは表示できません とでます。

質問
-
こんにちわ。
また教えてください。
DetailsViewを表示するページを作成しているのですが、
ローカルでテストをしていまして、実行すると
そのDetailsViewを参照するページは表示されます。
編集ボタンを押して、編集モードでも表示されます。
修正して更新ボタンを押すと、「ページが表示できません」という画面になります。
なぜこのページが出るのかがよくわかりません。
IISを削除して入れ直してみたりしましたが、変わりません。
ファイアウォールは無効にしてあります。
ブレークポイントを設定してみましたが、
Protected Sub DetailsView_ItemUpdating
の中に入る前に、ページが表示できませんの表示がされているみたいです。
Visual Studio2005 のVBです。
どなたかわかる方いらっしゃいましたらよろしくお願いします。
回答
-
-
以下のスレッドの続きですよね?
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=3451265&SiteID=7
DetailsViewに別テーブルからのデータを選択できるようにし、それを元のテーブルに表示するようにしたいそのときは、
> Where句の追加で、Querystringではなく、ソース noneに、番号の値をDetailsView
> ごとにそれぞれ、1,2,3,、、と設定していったら、今のところ3つのDetailsView
> にそれぞれ同じ日付の番号1,2,3のデータがそれぞれ表示されるようになりました!
>
> そして修正更新もできるようになりました!!
>
> (でもこの設定は今まで試した中でやっていたのですが、なぜか今できるようにな
> りました。。。)
>
> そして、Protected Sub dv1_ItemUpdatingの中に
>
> e.NewValues("seihin") = DirectCast(dv1.FindControl("ddl1"), DropDownList).SelectedValue
>
> これを設定しなくても修正更新ができているみたいです!
> 一つ一つのDropdownlistを設定しないといけないかと思っていじっていたのですが、
> 消してしまって大丈夫みたいです!!ということで、DropDownList を使うのはやめて、さらにコードを見ると前回問題が
解決できなかった楽観的同時実行制御を使うのもやめたようですが、そのコードが
残ってしまっているようです。それが原因かどうか分かりませんが、まずは不要なものは削除(というより、
SqlDataSource と GridView を、ウィザードベースでゼロから作り直す)して、それで試して見てはいかがですか?
-
SuferOnWwwさん
ありがとうございます。
>以下のスレッドの続きですよね?
はい、そうです。
色々いじって、修正したり、削除したり、作り直したりしていましたら、なんとかページが表示できませんというページが出てこず、
ちゃんと次のページが表示されるようになりました!
いじりすぎたせいで、どれが原因かがわからなくなってしまったのですが、(すみません。。)
ちゃんと思い通りに更新されているわけではないのですが(苦笑)、次のページが出てきました。
trapemiyaさん、お手数おかけして申し訳ございません。
いつもありがとうございます。
これに懲りずにまたどうぞよろしくお願いします。
SuferOnWwwさん、ありがとうございました。
すべての返信
-
ソルピー さんからの引用 更新に必要な列の値というのは、主キー列のことでしょうか?
主キー列のことではありません。全スレの内容から判断するに、DetailsViewからコードで列を削除されていれば、その列の値をSqlDataSourceに渡すことができず、そこでエラーになっているのかと想像しました。前提が間違っていたらごめんなさい。
ソルピー さんからの引用 試しに全項目にデータを入力して更新してみましたら同じ結果でした。
どこを見ればいいのか教えて頂いてもよろしいでしょうか?
もし、列を削除されていなければ話が変わってきますが、もし削除されているのでしたら、SqlDataSourceのUpdate文に渡しているパラメータ部分を確認してみて下さい。パラメータに値を渡すのに必要な列を削除されていませんか?
#私の前の発言はまだ回答済みにしない方がいいんじゃないかと思いますよ。まだ、原因がはっきりわかっていませんので。
-
-
trapemiyaさん
ありがとうございます。
「HT
TP エラーメッセー ジを簡易表示する」の チェックを外しても同じエラーで、ただページが表示できませんとでるだけでした。 コードです。足りますでしょうか?
よろしくお願いします。
<asp
etailsView ID="dv1" runat="server" AutoGenerateRows="False" CellPadding="4"
DataKeyNames="nonyubi,sharyo,no" DataSourceID="sds1" ForeColor="#333333" GridLines="None"
Height="50px" Width="224px" onitemupdating="dv1_ItemUpdating" OnDataBound="dv1_DataBound" OnItemDeleted="dv1_ItemDeleted" OnItemInserted="dv1_ItemInserted" OnItemInserting="dv1_ItemInserting" OnItemUpdated="dv1_ItemUpdated">
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<CommandRowStyle BackColor="#E2DED6" Font-Bold="True" />
<EditRowStyle BackColor="#FFFFC0" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<Fields>
<asp:BoundField DataField="gyosha" HeaderText="業者名" SortExpression="gyosha" />
<asp:BoundField DataField="genba" HeaderText="現場名" SortExpression="genba" />
<asp:BoundField DataField="namae" HeaderText="担当者名" SortExpression="namae" />
<asp:BoundField DataField="tel" HeaderText="TEL" SortExpression="tel" />
<asp:BoundField DataField="bikou" HeaderText="備考" SortExpression="bikou" />
<asp:CheckBoxField DataField="sumi" HeaderText="済" SortExpression="sumi" />
<asp:BoundField DataField="sakuseibi" HeaderText="作成日" ReadOnly="True" SortExpression="sakuseibi" />
<asp:BoundField DataField="kosinbi" HeaderText="更新日" ReadOnly="True" SortExpression="kosinbi" />
<asp:CommandField ButtonType="Button" ShowDeleteButton="True" ShowEditButton="True"
ShowHeader="True" />
<asp:BoundField DataField="juryokei" HeaderText="重量合計" SortExpression="juryokei" ReadOnly="True" />
<asp:TemplateField HeaderText="製品名1" SortExpression="seihin1">
<EditItemTemplate>
<aspropDownList ID="ddl1" runat="server" DataSourceID="sds1seihin" DataTextField="hname"
DataValueField="hname" SelectedValue='<%# Bind("seihin1") %>'>
</aspropDownList>
<aspqlDataSource ID="sds1seihin" runat="server" ConnectionString="<%$ ConnectionStrings:MyDB %>"
SelectCommand="SELECT [hname] FROM [seihin]">
</aspqlDataSource>
</EditItemTemplate>
<InsertItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("seihin1") %>'></asp:TextBox>
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("seihin1") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="su1" HeaderText="数量1" SortExpression="su1" />
<asp:BoundField DataField="juryo1" HeaderText="重量1" SortExpression="juryo1" />
<asp:BoundField DataField="seihin2" HeaderText="製品2" SortExpression="seihin2" />
<asp:BoundField DataField="juryo2" HeaderText="重量2" SortExpression="juryo2" />
<asp:BoundField DataField="su2" HeaderText="数2" SortExpression="su2" />
<asp:BoundField DataField="seihin3" HeaderText="製品3" SortExpression="seihin3" />
<asp:BoundField DataField="juryo3" HeaderText="重量3" SortExpression="juryo3" />
<asp:BoundField DataField="su3" HeaderText="数3" SortExpression="su3" />
</Fields>
<FieldHeaderStyle BackColor="#E9ECF1" Font-Bold="True" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
</aspetailsView>
<asp
qlDataSource ID="sds1" runat="server"
ConnectionString="<%$ ConnectionStrings:MyDB %>"
DeleteCommand="DELETE FROM [yotei] WHERE [nonyubi] = @original_nonyubi AND [sharyo] = @original_sharyo AND [no] = @original_no"
InsertCommand="INSERT INTO [yotei] ([nonyubi], [sharyo], [no], [gyosha], [genba], [namae], [tel], [sumi], [bikou], [sakuseibi], [kosinbi], [juryokei], [seihin1], [juryo1], [su1], [seihin2], [juryo2], [su2], [seihin3], [juryo3], [su3]) VALUES (@nonyubi, @sharyo, @no, @gyosha, @genba, @namae, @tel, @sumi, @bikou, @sakuseibi, @kosinbi, @juryokei, @seihin1, @juryo1, @su1, @seihin2, @juryo2, @su2, @seihin3, @juryo3, @su3)"
OldValuesParameterFormatString="original_{0}"
SelectCommand="SELECT * FROM [yotei] WHERE (([nonyubi] = @nonyubi) AND ([no] = @no) AND ([sharyo] = @sharyo))"
UpdateCommand="UPDATE [yotei] SET [gyosha] = @gyosha, [genba] = @genba, [namae] = @namae, [tel] = @tel, [sumi] = @sumi, [bikou] = @bikou, [sakuseibi] = @sakuseibi, [kosinbi] = @kosinbi, [juryokei] = @juryokei, [seihin1] = @seihin1, [juryo1] = @juryo1, [su1] = @su1, [seihin2] = @seihin2, [juryo2] = @juryo2, [su2] = @su2, [seihin3] = @seihin3, [juryo3] = @juryo3, [su3] = @su3 WHERE [nonyubi] = @original_nonyubi AND [sharyo] = @original_sharyo AND [no] = @original_no"><DeleteParameters>
<asparameter Name="original_nonyubi" Type="DateTime" />
<asparameter Name="original_sharyo" Type="String" />
<asparameter Name="original_no" Type="Byte" />
</DeleteParameters>
<UpdateParameters>
<asparameter Name="gyosha" Type="String" />
<asparameter Name="genba" Type="String" />
<asparameter Name="namae" Type="String" />
<asparameter Name="tel" Type="String" />
<asparameter Name="sumi" Type="Boolean" />
<asparameter Name="bikou" Type="String" />
<asparameter Name="sakuseibi" Type="DateTime" />
<asparameter Name="kosinbi" Type="DateTime" />
<asparameter Name="juryokei" Type="Int32" />
<asparameter Name="seihin1" Type="String" />
<asparameter Name="juryo1" Type="Int32" />
<asparameter Name="su1" Type="Int32" />
<asparameter Name="seihin2" Type="String" />
<asparameter Name="juryo2" Type="Int32" />
<asparameter Name="su2" Type="Int32" />
<asparameter Name="seihin3" Type="String" />
<asparameter Name="juryo3" Type="Int32" />
<asparameter Name="su3" Type="Int32" />
</UpdateParameters>
<SelectParameters>
<asp:QueryStringParameter Name="nonyubi" QueryStringField="nonyubi" Type="DateTime" />
<asparameter DefaultValue="1" Name="no" Type="Byte" />
<asparameter DefaultValue="202" Name="sharyo" Type="String" />
</SelectParameters>
<InsertParameters>
<asparameter Name="nonyubi" Type="DateTime" />
<asparameter Name="sharyo" Type="String" />
<asparameter Name="no" Type="Byte" />
<asparameter Name="gyosha" Type="String" />
<asparameter Name="genba" Type="String" />
<asparameter Name="namae" Type="String" />
<asparameter Name="tel" Type="String" />
<asparameter Name="sumi" Type="Boolean" />
<asparameter Name="bikou" Type="String" />
<asparameter Name="sakuseibi" Type="DateTime" />
<asparameter Name="kosinbi" Type="DateTime" />
<asparameter Name="juryokei" Type="Int32" />
<asparameter Name="seihin1" Type="String" />
<asparameter Name="juryo1" Type="Int32" />
<asparameter Name="su1" Type="Int32" />
<asparameter Name="seihin2" Type="String" />
<asparameter Name="juryo2" Type="Int32" />
<asparameter Name="su2" Type="Int32" />
<asparameter Name="seihin3" Type="String" />
<asparameter Name="juryo3" Type="Int32" />
<asparameter Name="su3" Type="Int32" />
</InsertParameters>
</aspqlDataSource>
Protected Sub dv1_ItemUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewUpdateEventArgs)
If Not Page.IsValid Then
e.Cancel = True
End IF
e.NewValues("juryokei") = e.NewValues("juryo1") * e.NewValues("su1") '製品重量合計をいれる
End Sub -
以下のスレッドの続きですよね?
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=3451265&SiteID=7
DetailsViewに別テーブルからのデータを選択できるようにし、それを元のテーブルに表示するようにしたいそのときは、
> Where句の追加で、Querystringではなく、ソース noneに、番号の値をDetailsView
> ごとにそれぞれ、1,2,3,、、と設定していったら、今のところ3つのDetailsView
> にそれぞれ同じ日付の番号1,2,3のデータがそれぞれ表示されるようになりました!
>
> そして修正更新もできるようになりました!!
>
> (でもこの設定は今まで試した中でやっていたのですが、なぜか今できるようにな
> りました。。。)
>
> そして、Protected Sub dv1_ItemUpdatingの中に
>
> e.NewValues("seihin") = DirectCast(dv1.FindControl("ddl1"), DropDownList).SelectedValue
>
> これを設定しなくても修正更新ができているみたいです!
> 一つ一つのDropdownlistを設定しないといけないかと思っていじっていたのですが、
> 消してしまって大丈夫みたいです!!ということで、DropDownList を使うのはやめて、さらにコードを見ると前回問題が
解決できなかった楽観的同時実行制御を使うのもやめたようですが、そのコードが
残ってしまっているようです。それが原因かどうか分かりませんが、まずは不要なものは削除(というより、
SqlDataSource と GridView を、ウィザードベースでゼロから作り直す)して、それで試して見てはいかがですか?
-
SuferOnWwwさん
ありがとうございます。
>以下のスレッドの続きですよね?
はい、そうです。
色々いじって、修正したり、削除したり、作り直したりしていましたら、なんとかページが表示できませんというページが出てこず、
ちゃんと次のページが表示されるようになりました!
いじりすぎたせいで、どれが原因かがわからなくなってしまったのですが、(すみません。。)
ちゃんと思い通りに更新されているわけではないのですが(苦笑)、次のページが出てきました。
trapemiyaさん、お手数おかけして申し訳ございません。
いつもありがとうございます。
これに懲りずにまたどうぞよろしくお願いします。
SuferOnWwwさん、ありがとうございました。
-
解決されて何よりです。ご提示されたコードを見た限りでは更新系でおかしなことは起きなさそうな感じでした。ItemUpdatingイベントが発生しないというのが最後まで引っかかっていたのですが、何か動作がおかしくなっていたのかもしれません。経験上、ASP.NETはそういう不可解な動作をする時があります。ASP.NETのテンポラリファイルを一度削除してみる手があったかもしれません。
通常、以下にあります。
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files
今回はいろいろいじっている中でウィザードの再実行をされたのであれば、それによって正しい構成が再生成されたのかもしれません。特にテーブルを途中で変更したような場合に、ウィザードの再実行でうまく動くようになった経験があります。