トップ回答者
GridView の一部を更新したい。

質問
-
いつもお世話になっております。現在ASP.NET(VB) .net2.0にて開発をしております。GridViewにDropDownList列を複数配置しておりDropDownList変更時にポストバックし、その他のDropDownListの内容を変更しております。その際、GridView全体が更新するので困っています。行数が少ない場合はそれでかまわないのですが、行数が多いと更新にかなり時間がかかってしまうのです。出来れば、変更列(変更箇所)のみ更新したいと思っております。JavaScriptで書けばいいと思うのですが、出来れば、ajax等を利用して対応したいと思い投稿させていただきました。ご教授のほどをお願いします。
回答
-
> 現行 DropDownList が変更されると、 → ポストバック → Gridview
> のほかの列の DropList の中身を変更しております。そうであれば、GridView 全体を UpdatePanel に含めないとうまくいかないと
思います。(GridView の一行だけ UpdatePanel で更新する方法はないと思い
ます。)現在のソースは、GridView 全体を UpdatePanel で囲うようにしているようで
すが、その方法ではうまくいっているのですよね?- 回答としてマーク .net勉強中 2010年3月22日 0:31
すべての返信
-
> JavaScriptで書けばいいと思うのですが、> 出来れば、ajax等を利用して対応したいと思い投稿させていただきました。
ajaxを利用するというのはJavaScriptで書く、ということになりますが。。。
GirdViewの内部の状況を簡単に変更してくれるようなツール(?)はないと思います。
> 行数が少ない場合はそれでかまわないのですが、行数が多いと更新にかなり時間がかかってしまうのです。
むしろ、「更新にかなり時間がかかる」という状態を解消する方法がないか調べてみたほうがいいかもしれません。
あおい情報システム株式会社 小野修司(どっとねっとふぁん) -
小野@どっとねっとふぁん様返信ありがとうございます。表現がおかしくてすいません。あまり詳しくないもので。。。ajaxでどうにかしたいというのはUpdatePanel等を利用してどうにかならないかな??と思ったのです。自分のいうJavascriptというのは、 DropDownListの <SELECT></SELECT>を入れなおすということでした。。。表現がおかしくて申し訳ないです。更新という表現もおかしかったです。 更新ではなく、表示のちらつきだと思っていただければありがたいです。。。すいません。。。。現行 DropDownList が変更されると、 → ポストバック → Gridview のほかの列の DropList の中身を変更しております。そうすると、サーバー側で、処理し、Gridview 全体が再表示されてしまい。画面がちらついてしまうのです。
-
もりお様返信ありがとうございます。はい。更新というのは ページのレンダリングのことです。現行 以下のようなソースでありまして、一度、列ごとをUpdatePanelで囲ってみたのですが、「
無効なポストバックまたはコールバック・・・
」という アプリケーションエラーが出てしまい、うまくいかなかったのです。<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ><ContentTemplate><asp:GridView id="gvwList" runat="server" Width="950px" CssClass="tbl_1" AutoGenerateColumns="False" ShowHeader="False" BorderWidth="2px"><Columns><asp:TemplateField><ItemTemplate><asp:DropDownList ID="cmb_shisetu" runat=server Width="70px" AutoPostBack=true OnSelectedIndexChanged="cmb_shisetu_SelectedIndexChanged"></asp:DropDownList></ItemTemplate><ItemStyle HorizontalAlign="Center" BorderWidth="2px" Width="75px"></ItemStyle></asp:TemplateField><asp:TemplateField><ItemTemplate><asp:DropDownList ID="cmb_kbn" runat=server Width="70px" AutoPostBack=true OnSelectedIndexChanged="cmb_kbn_SelectedIndexChanged"></asp:DropDownList></ItemTemplate><ItemStyle HorizontalAlign="Center" BorderWidth="2px" Width="75px"></ItemStyle></asp:TemplateField>**************この下に いくつか、 リスト、テキスト等があります。 **********************</asp:GridView></ContentTemplate></asp:UpdatePanel>なにかいい解決策とかはあれば、ご教授いただけるとありがたいです。。。どうぞよろしくお願いします。 -
こちらの記事が解決の手助けになるかもしれません。例外メッセージが途中までなので、エラー内容は推測ですが・・・。
なかむら(http://d.hatena.ne.jp/griefworker) -
> 現行 DropDownList が変更されると、 → ポストバック → Gridview
> のほかの列の DropList の中身を変更しております。そうであれば、GridView 全体を UpdatePanel に含めないとうまくいかないと
思います。(GridView の一行だけ UpdatePanel で更新する方法はないと思い
ます。)現在のソースは、GridView 全体を UpdatePanel で囲うようにしているようで
すが、その方法ではうまくいっているのですよね?- 回答としてマーク .net勉強中 2010年3月22日 0:31