防犯や防災時に役立グッズが多数 「備えて安心グッズのお店」
お得なわけあり商品を多数取り揃え 「訳ありお得館」
厳選デジタルグッズのお店 「おもしろデジモノのデジモノ屋」
厳選食品お取り寄せのお店 「まんぷく屋」
美と健康を考えるお店 「La beaut」
ASP.NETからデータをアップロード ― 2012年02月07日 15時03分05秒
グループウェア開発に関連し、社内で構築しているWebシステムから、
データをアップロードすることになりました。
動いている社内システムはASP.NETが使われていて、
DataGridに一覧表示されている情報をアップロードすることになりました。
DataGridにアップロード用のリンクを追加し、クリックすることでデータを送信し、
PHPで受け取る形で作りました。
PHP側では、GETでデータを取得しています。
ASP.NETは最近使ってなかったので、思ったよりも時間がかかりました。
しかも、動いているASP.NETはバージョンが古いらしく、
VisualStudioで開くと、警告がたくさん出てきました。
今回はその辺の警告は無視し、リンクの作成に集中することにします。
まず、DataGrid上でリンクを作る方法がよくわからず、調べてみました。
複数のパラメータを渡すようにするには、<ItemTemplate>が必要なようで、
サンプルが書かれているサイトを見ながら作ってみたのですが、エラーになります。
順番にタグを追加していき、追加するたびに実行させたのですが、
NavigateUrlにアドレスを追加すると、HyperLinkでエラーになるという症状が出ていました。
**********************************************
<asp:TemplateColumn HeaderText="アップロード">
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server"
Text='<%# DataBinder.Eval(Container.DataItem, "name") %>' />
</ItemTemplate>
</asp:TemplateColumn>
**********************************************
ここまでは順調だったのですが、
**********************************************
<asp:TemplateColumn HeaderText="アップロード">
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server"
Text='<%# DataBinder.Eval(Container.DataItem, "name") %>'
NavigateUrl='<%# "http://localhost/GroupWare/upload.php?id="
+ Server.DataBinder.Eval(Container.DataItem, "ID") %>' />
</ItemTemplate>
</asp:TemplateColumn>
**********************************************
とするとエラーになりました。
本来は、ID以外にもアップする項目があるのですが、
とりあえずでやってみたらエラーでした。
NavigateUrlを指定せずに動かすと、Textの項目はきちんと表示されるので、
データは取得できるようなのですが、IDを設定するとエラーになっています。
いろいろ試した結果、どうも改行するのがダメみたいで、
NavigateUrlを1行で記述するとエラーにならなかったので、
実行してみると、リンクができていました。
早速アップロードしてみたのですが、日本語の情報がアップされませんでした。
ただ、これはエンコードしていないのが原因なので、エンコードの設定を追加しました。
**********************************************
<asp:TemplateColumn HeaderText="アップロード">
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server"
Text='<%# Server.UrlEncode(DataBinder.Eval(Container.DataItem, "name")) %>'
NavigateUrl='<%# "http://localhost/GroupWare/upload.php?id="+Server.DataBinder.Eval(Container.DataItem, "ID") %>' />
</ItemTemplate>
</asp:TemplateColumn>
**********************************************
これで、アップロードしたデータがきちんと日本語で登録されました。
データをアップロードすることになりました。
動いている社内システムはASP.NETが使われていて、
DataGridに一覧表示されている情報をアップロードすることになりました。
DataGridにアップロード用のリンクを追加し、クリックすることでデータを送信し、
PHPで受け取る形で作りました。
PHP側では、GETでデータを取得しています。
ASP.NETは最近使ってなかったので、思ったよりも時間がかかりました。
しかも、動いているASP.NETはバージョンが古いらしく、
VisualStudioで開くと、警告がたくさん出てきました。
今回はその辺の警告は無視し、リンクの作成に集中することにします。
まず、DataGrid上でリンクを作る方法がよくわからず、調べてみました。
複数のパラメータを渡すようにするには、<ItemTemplate>が必要なようで、
サンプルが書かれているサイトを見ながら作ってみたのですが、エラーになります。
順番にタグを追加していき、追加するたびに実行させたのですが、
NavigateUrlにアドレスを追加すると、HyperLinkでエラーになるという症状が出ていました。
**********************************************
<asp:TemplateColumn HeaderText="アップロード">
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server"
Text='<%# DataBinder.Eval(Container.DataItem, "name") %>' />
</ItemTemplate>
</asp:TemplateColumn>
**********************************************
ここまでは順調だったのですが、
**********************************************
<asp:TemplateColumn HeaderText="アップロード">
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server"
Text='<%# DataBinder.Eval(Container.DataItem, "name") %>'
NavigateUrl='<%# "http://localhost/GroupWare/upload.php?id="
+ Server.DataBinder.Eval(Container.DataItem, "ID") %>' />
</ItemTemplate>
</asp:TemplateColumn>
**********************************************
とするとエラーになりました。
本来は、ID以外にもアップする項目があるのですが、
とりあえずでやってみたらエラーでした。
NavigateUrlを指定せずに動かすと、Textの項目はきちんと表示されるので、
データは取得できるようなのですが、IDを設定するとエラーになっています。
いろいろ試した結果、どうも改行するのがダメみたいで、
NavigateUrlを1行で記述するとエラーにならなかったので、
実行してみると、リンクができていました。
早速アップロードしてみたのですが、日本語の情報がアップされませんでした。
ただ、これはエンコードしていないのが原因なので、エンコードの設定を追加しました。
**********************************************
<asp:TemplateColumn HeaderText="アップロード">
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server"
Text='<%# Server.UrlEncode(DataBinder.Eval(Container.DataItem, "name")) %>'
NavigateUrl='<%# "http://localhost/GroupWare/upload.php?id="+Server.DataBinder.Eval(Container.DataItem, "ID") %>' />
</ItemTemplate>
</asp:TemplateColumn>
**********************************************
これで、アップロードしたデータがきちんと日本語で登録されました。
コメント
トラックバック
このエントリのトラックバックURL: http://n-box.asablo.jp/blog/2012/02/07/6324117/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。