3

私は後ろに次のコードを持っています:

[WebMethod]
public static string GenerateHtml(string id)
{
    //return id;
    DataView vwMain2;
    try
    {
        DbProviderFactory dbf = DbProviderFactories.GetFactory();
        using (IDbConnection con = dbf.CreateConnection())
        {
            string sSQL;
            sSQL = "select top 20                " + ControlChars.CrLf
                 + " ASSISTING_FILE_ID, DATE_ENTERED, CLIENT_CLAIM_NUM, PRIMARY_INSURED, PRIMARY_CLAIMANT, LOB_ID, FILE_STATUS, BRANCH_NAME," + ControlChars.CrLf
                 + " OWNERS_FIRST_NAME, OWNERS_LAST_NAME, OWNERS_NAME, OWNERS_EMAIL, OWNERS_OFFICE_PHONE, OWNERS_FAX_PHONE, OWNERS_CELL_PHONE" + ControlChars.CrLf
                 + "  from vwFILES_DetailViewWithOwners" + ControlChars.CrLf
                 + " where 1 = 1                    " + ControlChars.CrLf;
            //+ " where 1 = 1 and WEB_USER_ID = '" + Security.USER_ID.ToString() + "'" + ControlChars.CrLf;
            using (IDbCommand cmd = con.CreateCommand())
            {
                cmd.CommandText = sSQL;

                using (DbDataAdapter da = dbf.CreateDataAdapter())
                {
                    ((IDbDataAdapter)da).SelectCommand = cmd;
                    using (DataTable dt = new DataTable())
                    {
                        da.Fill(dt);
                        vwMain2 = dt.DefaultView;
                        GridView2.DataSource = vwMain2;

                            GridView2.DataBind();

                    }
                }
            }
        }
    }
    catch (Exception ex)
    {
        SplendidError.SystemError(new StackTrace(true).GetFrame(0), ex.Message);
        //lblError.Text = ex.Message;
    }

}

ASPXページに次のものがあります。

<asp:GridView ID="GridView2" runat="server">
                </asp:GridView>

コードビハインドで参照しようとするGridView2と、「非静的フィールド、メソッド、またはプロパティGridView2にはオブジェクト参照が必要です」と表示されます。

GenerateHtmlこの問題を解決して、が呼び出されたときにグリッドビューを作成できるようにするにはどうすればよいですか、それとももっと良い方法がありますか?

4

1 に答える 1

3

WebMethodを呼び出すときに、ページ要素への参照はありません。静的メソッドを呼び出していることを忘れないでください。コードビハインドのページレベルの要素にアクセスするには、すべての「魔法」が発生する.NETページのライフサイクルを通過する必要があります。

このSOの質問を見て、必要なことを実行する方法を見つけてください。Webメソッドを使用してデータグリッドを更新する方法

于 2013-02-11T21:36:27.673 に答える