0

タブコントロールがあります。最初のタブにはグリッドがあり、列の 1 つはチェックボックスです。ユーザーはそれを選択し、タブの下の「次へ」をクリックしてから、次のタブに進みます。

値を取得するために Web 参照を使用しています。ページが初めて読み込まれると、参照が機能し、値に到達できるようになり、グリッドがバインドされます。

しかし、「次へ」をクリックすると、ポストバックが発生し、グリッドを再度バインドしようとすると、参照は「SoapExpection」になります。詳細は次のとおりです。

-> 行を選択して [次へ] をクリックします。

protected void gridView_HtmlRowCreated(object sender, ASPxGridViewTableRowEventArgs e)
        {
            if (e.RowType == GridViewRowType.Data)
            {
                   //bla bla bla
                   //I get the error here:
                   ClassEntity tmpObjects = webService.callObjects(rowID);
                   //bla bla bla
            {
        {

-> callObjects(int ID) という名前の関数 (Reference.cs 内)

[System.Web.Services.Protocols.SoapDocumentMethodAttribute("...", RequestNamespace="...", ResponseNamespace="...", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public ClassEntity callObjects(int ID) {
            object[] results = this.Invoke("callObjects", new object[] {
                        ID});
            return ((ClassEntity)(results[0]));

そして正確なエラー:「SoapException: サーバーは要求を処理できませんでした。オブジェクト参照がオブジェクトのインスタンスに設定されていません」

アイデア、提案、または... 解決策はありますか? 前もって感謝します。

4

1 に答える 1

1

System.Web.Services.Protocols.SoapHeaderから継承するクラスのWeb参照に到達するために、ユーザー名とパスワードを使用していました。

Page_Loadでユーザー名とパスワードを定義していましたが、[次へ]をクリックするとこれらの値がクリーンアップされたようです。そのため、gridView_HtmlRowCreatedイベントで同じデクレレーションを実行し、機能しました。

それが私のような人に役立つことを願っています。

于 2011-07-13T14:39:13.203 に答える